java初学模拟斗地主发牌

public class PokerDemo {
    public static void main(String[] args) {
        // 一副扑克牌
        HashMap<Integer, String> pokerMap = new HashMap<>();

        // 用来控制牌的顺序
        List<Integer> sortCtrlList = new ArrayList<>();

        // 花色
        String[] colours = {"♥", "♠", "♦", "♣"};
        // 点数
        String[] points = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};

        int index = 0;

        // 组合牌
        for (String colour : colours) {
            for (String point : points) {
                String poker = colour.concat(point);
                pokerMap.put(index, poker);
                sortCtrlList.add(index);
                index++;
            }
        }
        pokerMap.put(index, "小王");
        sortCtrlList.add(index);
        index++;
        pokerMap.put(index, "大王");
        sortCtrlList.add(index);

        // 洗牌
        Collections.shuffle(sortCtrlList);

        // 模拟三个用户和一份底牌
        TreeSet<Integer> p1 = new TreeSet<>();
        TreeSet<Integer> p2 = new TreeSet<>();
        TreeSet<Integer> p3 = new TreeSet<>();
        TreeSet<Integer> coveredCard = new TreeSet<>();

        // 发牌
        for (int i = 0; i < sortCtrlList.size(); i++) {
            // 前三张给底牌
            if (i < 3) {
                coveredCard.add(sortCtrlList.get(i));
            } else if (i % 3 == 0) {
                p1.add(sortCtrlList.get(i));
            } else if (i % 3 == 1) {
                p2.add(sortCtrlList.get(i));
            } else {
                p3.add(sortCtrlList.get(i));
            }
        }

        showPoker("曹地主", p1, pokerMap);
        showPoker("王铁柱", p2, pokerMap);
        showPoker("田二妞", p3, pokerMap);
        showPoker("底牌", coveredCard, pokerMap);
    }

    /**
     * 看手牌
     * @param name
     * @param player
     * @param pokerMap
     */
    private static void showPoker(String name, TreeSet<Integer> player, HashMap<Integer, String> pokerMap) {
        System.out.print(name + ": ");
        for (Integer index : player) {
            System.out.print(pokerMap.get(index) + " ");
        }
        System.out.println();
    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值