方法1:
package com.oracle.pc;
import java.util.ArrayList;
import java.util.Collections;
public class FaPai
{
public static void main(String[] args)
{
// 擷取牌
ArrayList<String> pai = getPai();
// 洗牌
Collections.shuffle(pai);
// 發牌
ArrayList<String> user1 = new ArrayList<>();
ArrayList<String> user2 = new ArrayList<>();
ArrayList<String> user3 = new ArrayList<>();
ArrayList<String> diapi = fapai(pai, user1, user2, user3);
// 看牌
System.out.println("user1" + user1);
System.out.println("user2" + user2);
System.out.println("user3" + user3);
System.out.println(diapi);
}
// 發三個人牌
public static ArrayList<String> fapai(ArrayList<String> pai, ArrayList<String> user1, ArrayList<String> user2,
ArrayList<String> user3)
{
ArrayList<String> dipai = new ArrayList<>();
for (int i = 0; i < 51; i++)
{
String s = pai.get(i);
if (i % 3 == 0)
{
user1.add(s);
}
else if (i % 3 == 1)
{
user2.add(s);
}
else
{
user3.add(s);
}
}
// 傳回底牌集合
dipai.add(pai.get(51));
dipai.add(pai.get(52));
dipai.add(pai.get(53));
return dipai;
}
// 模拟出所有牌面值 存放到集合中
public static ArrayList<String> getPai()
{
// 定義牌面值集合
ArrayList<String> list = new ArrayList();
// 定義花色
ArrayList<String> huase = new ArrayList();
huase.add("黑桃");
huase.add("紅桃");
huase.add("梅花");
huase.add("方塊");
// 定義字面值
ArrayList<String> zimianvalue = new ArrayList<String>();
for (int i = 2; i <= 10; i++)
{
zimianvalue.add(i + "");
}
zimianvalue.add("J");
zimianvalue.add("Q");
zimianvalue.add("K");
zimianvalue.add("A");
// 花色和字面值糾纏
for (String s : zimianvalue)
{
for (String ss : huase)
{
list.add(ss + s);
}
}
list.add("大王");
list.add("小王");
return list;
}
}
運作結果:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLwkjM5MjMyATM1ETNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
方法2:
建立一個card屬性類
package com.oracal.core;
public class Card
{
//點數
private int num;
//花色
private String color;
//名稱
private String name;
public int getNum()
{
return num;
}
public void setNum(int num)
{
this.num = num;
}
public String getColor()
{
return color;
}
public void setColor(String color)
{
this.color = color;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public Card(int num, String color, String name)
{
super();
this.num = num;
this.color = color;
this.name = name;
}
public Card()
{
super();
// TODO Auto-generated constructor stub
}
}
再建立一個CardStudy類
package com.oracal.core;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
public class CardStudy
{
public static void shuffle()
{
List cardList=new ArrayList(); //
//準備一副牌
String[] colors={"紅桃","黑桃","梅花","方片"};
String [] nums={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
for(int i=0;i<colors.length;i++)
{
for(int j=0;j<nums.length;j++)
{
Card card=new Card(j+1,colors[i],colors[i]+nums[j]);
cardList.add(card);
}
}
Card xiaowang=new Card(15,"黑色","小王");
Card dawang=new Card(16,"紅色","大王");
cardList.add(xiaowang);
cardList.add(dawang);
//洗牌 把順序打亂
Collections.shuffle(cardList,new Random(10));
//發牌 3個集合 底牌
List allList=new ArrayList();
List one=cardList.subList(0,17);
List two=cardList.subList(17,34);
List three=cardList.subList(34,51);
List dizhu=cardList.subList(51, 54);
//看牌
System.out.println("玩家1:");
Iterator iterator = one.iterator();
while(iterator.hasNext())
{
Card c=(Card)iterator.next();
System.out.print(c.getName()+"\t");
}
System.out.println();
System.out.println("玩家2:");
Iterator iterator2 = two.iterator();
while(iterator2.hasNext())
{
Card c=(Card)iterator2.next();
System.out.print(c.getName()+"\t");
}
System.out.println();
System.out.println("玩家3:");
Iterator iterator3 = three.iterator();
while(iterator3.hasNext())
{
Card c=(Card)iterator3.next();
System.out.print(c.getName()+"\t");
}
System.out.println();
System.out.println("底牌:");
Iterator iterator4 = dizhu.iterator();
while(iterator4.hasNext())
{
Card c=(Card)iterator4.next();
System.out.print(c.getName()+"\t");
}
}
public static void main(String[] args)
{
shuffle();
}
}
運作結果: