代码
public class PokerShuffleCards {
public static void main(String[] args) {
// 准备花色
ArrayList<String> color = new ArrayList<String>();
color.add("♠");
color.add("♥");
color.add("♦");
color.add("♣");
// 准备数字,用arrayList将纸牌由小到大排序
ArrayList<String> number = new ArrayList<String>();
for (int i = 3; i <= 10; i++) {
number.add(i + "");
}
number.add("J");
number.add("Q");
number.add("K");
number.add("A");
number.add("2");
// 定义一个map集合:用来将数字与纸牌进行对应
HashMap<Integer, String> map = new HashMap<Integer, String>();
int index = 0; // 纸牌编号
for (String thisNumber : number) {
for (String thisColor : color) {
// 将花色与数字组合
map.put(index++, thisColor + thisNumber);
}
}
// 加入大小王
map.put(index++, "小☺");
map.put(index++, "大☺");
// 创建内容为0-53的数字集合代表54张牌
ArrayList<Integer> cards = new ArrayList<Integer>();
for (int i = 0; i < 54; i++) {
cards.add(i);
}
// 洗牌,使用Collections工具类中胡shuffle()方法
Collections.shuffle(cards);
// 创建三个玩家和底牌
ArrayList<Integer> iPlayer0 = new ArrayList<Integer>();
ArrayList<Integer> iPlayer1 = new ArrayList<Integer>();
ArrayList<Integer> iPlayer2 = new ArrayList<Integer>();
ArrayList<Integer> iSecretCards = new ArrayList<Integer>();
// 发牌
for (int i = 0; i < cards.size(); i++) {
if (i >= 51) {
iSecretCards.add(cards.get(i)); // 留取3张底牌
} else {
if (i % 3 == 0) { // 与3取余为0发给玩家0
iPlayer0.add(cards.get(i));
} else if (i % 3 == 1) { // 与3取余为1发给玩家1
iPlayer1.add(cards.get(i));
} else {// 与3取余为2发给玩家2
iPlayer2.add(cards.get(i));
}
}
}
// 使用Collections的sort方法,对每个人手中的牌进行排序
Collections.sort(iPlayer0);
Collections.sort(iPlayer1);
Collections.sort(iPlayer2);
// 对应数字形式的每个人手中的牌,定义字符串形式的牌
ArrayList<String> sPlayer0 = new ArrayList<String>();
ArrayList<String> sPlayer1 = new ArrayList<String>();
ArrayList<String> sPlayer2 = new ArrayList<String>();
ArrayList<String> sSecretCards = new ArrayList<String>();
// 循环主键,从map中获取纸牌
for (Integer key : iPlayer0) {
sPlayer0.add(map.get(key));
}
for (Integer key : iPlayer1) {
sPlayer1.add(map.get(key));
}
for (Integer key : iPlayer2) {
sPlayer2.add(map.get(key));
}
for (Integer key : iSecretCards) {
sSecretCards.add(map.get(key));
}
// 看牌
System.out.println("玩家1:" + sPlayer0);
System.out.println("玩家2:" + sPlayer1);
System.out.println("玩家3:" + sPlayer2);
System.out.println("底牌:" + sSecretCards);
}
}
结果
版权声明:本文为weixin_41897680原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。