需求:通过程序实现斗地主过程中的洗牌,发牌和看牌。要求:对每个人的牌进行排序思路:
- 创建HashMap,键是编号,值是牌创建ArrayList,存储扑克牌的编号创建花色数组和点数数组从0开始往HashMap里面存储编号,并存储对应的牌,同时往ArrayList里面存储编号洗牌,使用collections集合中shuffle()方法发牌,为了保证顺序,使用TreeSet集合接收定义方法看牌,遍历TreeSet集合,在HashMap中找到对应的牌调用看牌方法
package Collection.demo07;
import java.util.*;
public class PokerDemo {
public static void main(String[] args) {
//创建HashMap,键是编号,值是牌
HashMap hashMap = new HashMap();
//创建ArrayList,用来存放扑克牌
ArrayList poker = new ArrayList();
//创建ArrayList,用来存放牌的编号
ArrayList totalNumber = new ArrayList();
//创建花色数组和点数数组
String[] colors = {"♥", "♦", "♣", "♠"};
String[] numbers = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A","2"};
//添加进扑克牌集合
for (String n : numbers) {
for (String c : colors) {
poker.add(c + n);
}
}
poker.add("joker");//小王
poker.add("JOKER");//大王
//将扑克牌添加进HashMap集合,并为每一张牌添加一个编号
for (int i = 0; i < 54; i++) {
hashMap.put(i, poker.get(i));
totalNumber.add(i);
}
//洗牌,将牌的编号打乱,使用 Collections.shuffle()方法实现
Collections.shuffle(totalNumber);
//创建三个玩家集合以及一个底牌集合
TreeSet play1 = new TreeSet();
TreeSet play2 = new TreeSet();
TreeSet play3 = new TreeSet();
TreeSet landlord = new TreeSet();
//发牌,将打乱的编号依次发给每个人
for (int i = 0; i < 54; i++) {
if (i >= 51) {
landlord.add(totalNumber.get(i));
} else if (i % 3 == 0) {
play1.add(totalNumber.get(i));
} else if (i % 3 == 1) {
play2.add(totalNumber.get(i));
} else if (i % 3 == 2) {
play3.add(totalNumber.get(i));
}
}
//调用看牌方法
lookCard("玩家一", play1, hashMap);
lookCard("玩家二", play2, hashMap);
lookCard("玩家三", play3, hashMap);
lookCard("底牌", landlord, hashMap);
}
//定义看牌方法,有三个参数,分别是玩家的名字,玩家的手牌以及提供编号和扑克牌对应关系的HashMap集合
public static void lookCard(String name, TreeSet ts, HashMap hm) {
System.out.print(name + "的牌是:");
for (Integer i : ts) {//遍历玩家的手牌
String s = hm.get(i);//获取与编号相对应的扑克牌
System.out.print(s + " ");
}
System.out.println();//换行
}
}
运行结果
第一次运行:
第二次运行:
第三次运行:



