斗地主模拟扑克牌的洗牌、发牌和看牌

斗地主模拟(最终结果为控制台随机输出三个玩家和底牌的牌面)

分析:
在这里插入图片描述
输出结果:
在这里插入图片描述

    public static void main(String[] args) {
// ------------------------- 创建扑克牌 ----------------------------------------
        // 编号与牌面映射
        Map<Integer, String> pokerMap = new HashMap<>();
        // 存入编号,用于后面的打乱顺序
        List<Integer> numberList = new ArrayList<>();

        // 大小王最大,编号最小
        pokerMap.put(0, "大王");
        pokerMap.put(1, "小王");
        numberList.add(0);
        numberList.add(1);

        String[] pokerNumbers = "2,A,K,Q,J,10,9,8,7,6,5,4,3".split(",");
        String[] pokerTags = "♥-♦-♣-♠".split("-");

        // 存入编号和牌面映射
        int num = 2;
        for (String pokerNumber : pokerNumbers) {
            for (String pokerTag : pokerTags) {
                pokerMap.put(num, pokerTag + pokerNumber);
                numberList.add(num);
                num++;
            }
        }

// ------------------------- 发牌 ----------------------------------------
        // 乱序
        Collections.shuffle(numberList);

        // 三个玩家 和 底牌
        Set<Integer> player1 = new TreeSet<>();
        Set<Integer> player2 = new TreeSet<>();
        Set<Integer> player3 = new TreeSet<>();
        Set<Integer> bottom = new TreeSet<>();

        // 先添加底牌
        bottom.add(numberList.get(0));
        bottom.add(numberList.get(1));
        bottom.add(numberList.get(2));

        for (int i = 3; i < numberList.size(); i++) {
            if (i % 3 == 0) player1.add(numberList.get(i));
            else if (i % 3 == 1) player2.add(numberList.get(i));
            else player3.add(numberList.get(i));
        }



// ------------------------- 看牌 ----------------------------------------
        // 玩家和底牌
        List<String> player1Poker = new ArrayList<>();
        List<String> player2Poker = new ArrayList<>();
        List<String> player3Poker = new ArrayList<>();
        List<String> bottomPoker = new ArrayList<>();

        // 在map映射中取牌面
        for (Integer i : player1) {
            String poker = pokerMap.get(i);
            player1Poker.add(poker);
        }
        for (Integer i : player2) {
            String poker = pokerMap.get(i);
            player2Poker.add(poker);
        }
        for (Integer i : player3) {
            String poker = pokerMap.get(i);
            player3Poker.add(poker);
        }
        for (Integer i : bottom) {
            String poker = pokerMap.get(i);
            bottomPoker.add(poker);
        }

        System.out.println("玩家一:" + player1Poker);
        System.out.println("玩家二:" + player3Poker);
        System.out.println("玩家三:" + player2Poker);
        System.out.println("底牌:" + bottom);

    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值