方法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;
}
}
运行结果:
方法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();
}
}
运行结果: