下面是一个使用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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录