代码
import java.util.*;
public class PokerDemo {
public static void main(String[] args) {
//准备牌
HashMap<Integer, String> poker = new HashMap<>();
ArrayList<Integer> pokerIndex = new ArrayList<>();
List<String> colors = List.of("♥", "♠", "♣", "♦");
List<String> numbers = List.of("2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3");
int index = 0;
for (String number : numbers) {
for (String color : colors) {
poker.put(index, color + number);
pokerIndex.add(index);
index++;
}
}
poker.put(index, "小王");
pokerIndex.add(index);
index++;
poker.put(index, "大王");
pokerIndex.add(index);
//洗牌
Collections.shuffle(pokerIndex);
//发牌
ArrayList<Integer> player01 = new ArrayList<>();
ArrayList<Integer> player02 = new ArrayList<>();
ArrayList<Integer> player03 = new ArrayList<>();
ArrayList<Integer> lastThreeCards = new ArrayList<>(); //底牌
for (int i = 0; i < pokerIndex.size(); i++) {
int card = pokerIndex.get(i);
if (i >= 51) {
lastThreeCards.add(card);
} else if (i % 3 == 0) {
player01.add(card);
} else if (i % 3 == 1) {
player02.add(card);
} else if (i % 3 == 2) {
player03.add(card);
}
}
//排序
Collections.sort(player01);
Collections.sort(player02);
Collections.sort(player03);
Collections.sort(lastThreeCards);
//打印牌面
printCards("玩家1", poker, player01);
printCards("玩家2", poker, player02);
printCards("玩家3", poker, player03);
printCards("底牌", poker, lastThreeCards);
}
//打印牌面
public static void printCards(String name, HashMap<Integer, String> poker, ArrayList<Integer> list) {
System.out.print(name + ":");
for (Integer key : list) {
String value = poker.get(key);
System.out.print(value + " ");
}
System.out.println();
}
}
实现思路
洗牌的思路:
- 准备一副扑克牌,使用HashMap来表示,键为牌的编号,值为牌的名字。
- 使用ArrayList来表示洗好的牌的编号。
- 使用Collections.shuffle()方法来随机打乱牌的编号。
发牌的思路:
- 准备好3个ArrayList类型的变量来表示3个玩家的手牌,以及一个ArrayList类型的变量来表示底牌。
- 使用for循环,依次从洗好的牌中取出编号,再根据编号从HashMap中取出牌的名字,然后按照发牌规则,将牌分配给3个玩家和底牌。
看牌的思路:
- 使用Collections.sort()方法对每个玩家的手牌和底牌进行排序。
- 遍历每个玩家的手牌和底牌,根据牌的编号从HashMap中取出牌的名字,并将牌的名字输出即可。