importjava.util.ArrayList;importjava.util.Collections;importjava.util.HashMap;importjava.util.List;importjava.util.Set;public classTest {public static voidmain(String[] args) {/*思路分析:
1,生成牌:用map集合保存54张牌,且从1-54数字对应起来*/List color = new ArrayList<>();
List point = new ArrayList<>();
Collections.addAll(color,"♥","♠","♣","♦");
Collections.addAll(point,"A","2","3","4","5","6","7","8","9","10","J","Q","K");
HashMap poker = new HashMap<>();
poker.put(0, "大王");
poker.put(1, "小王");int serialNum = 2;for(String d : point) {for(String c : color) {
poker.put(serialNum,c+d);
serialNum++;
}
}//一副扑克牌生成完成//System.out.println(poker);//输出验证//2,利用序号->洗牌->发牌//
//获取双列map集合中的所有key值
Set key =poker.keySet();//利用有参构造方法来初始化单列List集合
List pokerNum = newArrayList(key);//System.out.println(pokerNum);//获取所有key值完毕
Collections.shuffle(pokerNum);//利用三个玩家容器和一个底牌容器存储(容器使用单列集合,便于排序,利用序号(也就是双列集合中key值)取对应的牌面就行了)
List player1 = new ArrayList<>();
List player2 = new ArrayList<>();
List player3 = new ArrayList<>();
List lastPoker = new ArrayList<>();for (int i = 0; i < pokerNum.size(); i++) {if(i >= 51) {//注意要添加的值是扑克打乱后的值,非遍历的序号值
lastPoker.add(pokerNum.get(i));
}else if(i % 3 == 1){
player1.add(pokerNum.get(i));
}else if(i % 3 == 2) {
player2.add(pokerNum.get(i));
}else{
player3.add(pokerNum.get(i));
}
}//发牌完毕,整理牌面
Collections.sort(lastPoker);
Collections.sort(player1);
Collections.sort(player2);
Collections.sort(player3);//3.利用玩家获得牌面的序号,取牌//每个玩家遍历一次
System.out.print("底牌:");for(Integer i : lastPoker) {
String str=poker.get(i);
System.out.print(str+" ");
}
System.out.println();
System.out.print("玩家1:");for(Integer i : player1) {
String str=poker.get(i);
System.out.print(str+" ");
}
System.out.println();
System.out.print("玩家2:");for(Integer i : player2) {
String str=poker.get(i);
System.out.print(str+" ");
}
System.out.println();
System.out.print("玩家3:");for(Integer i : player3) {
String str=poker.get(i);
System.out.print(str+" ");
}
}
}
这篇博客详细介绍了如何使用Java编程实现一副扑克牌的生成、洗牌和发牌过程。通过创建ArrayList和HashMap存储牌的信息,然后利用Collections.shuffle进行洗牌,并将牌均匀分配给三个玩家。最后,代码还展示了如何打印出底牌和每个玩家的牌面。这是一个基础的算法实践案例,适合初学者理解数据结构和控制流程的应用。
197

被折叠的 条评论
为什么被折叠?



