Java语言用HashMap完成斗地主洗牌发牌案例把54张牌随机发给3个玩家和底牌
下面是一个使用Java语言的HashMap完成斗地主洗牌发牌的案例:
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
public class DouDiZhuGame {
public static void main(String[] args) {
// 创建一副扑克牌
List<String> poker = createPoker();
// 洗牌
Collections.shuffle(poker);
// 发牌
dealCards(poker);
}
// 创建一副扑克牌
public static List<String> createPoker() {
List<String> poker = new ArrayList<>();
// 定义花色和点数数组
String[] colors = {"♠", "♥", "♣", "♦"};
String[] numbers = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};
// 添加大王和小王
poker.add("大王");
poker.add("小王");
// 添加其他52张牌
for (String color : colors) {
for (String number : numbers) {
poker.add(color + number);
}
}
return poker;
}
// 发牌
public static void dealCards(List<String> poker) {
// 创建HashMap集合,用于存储玩家和对应的牌
HashMap<String, ArrayList<String>> players = new HashMap<>();
// 创建存储玩家的List集合
ArrayList<String> playerList = new ArrayList<>();
playerList.add("玩家1");
playerList.add("玩家2");
playerList.add("玩家3");
playerList.add("底牌");
// 初始化玩家的牌列表
for (String player : playerList) {
players.put(player, new ArrayList<>());
}
// 发牌
for (int i = 0; i < poker.size(); i++) {
String card = poker.get(i);
if (i >= 51) {
// 发底牌
players.get("底牌").add(card);
} else {
// 发给玩家
players.get(playerList.get(i % 3)).add(card);
}
}
// 打印结果
for (String player : playerList) {
System.out.println(player + ": " + players.get(player));
}
}
}
这个案例中,首先通过createPoker()方法创建了一副扑克牌,包括大王、小王以及其他52张牌。然后使用Collections.shuffle()方法对牌进行洗牌操作。
接下来,使用HashMap存储玩家和对应的牌。创建了一个HashMap集合players,其中键为玩家的名称("玩家1"、"玩家2"、"玩家3"、"底牌"),值为对应的牌列表。使用ArrayList集合playerList存储玩家的名称。
然后使用dealCards()方法进行发牌操作。遍历洗好的牌,根据索引将牌发给玩家或底牌。如果索引大于等于51,则将牌发给底牌;否则,使用索引对3取模,将牌发给对应的玩家。
最后,打印出各个玩家和底牌的牌列表。
注意:这个案例只是一个简单的示例,实际的斗地主游戏可能还需要考虑牌的大小、出牌规则等内容
原文地址: https://www.cveoy.top/t/topic/hF6l 著作权归作者所有。请勿转载和采集!