斗地主排序版

斗地主排序版

原理图解:
在这里插入图片描述

/*  
        案例演示:
        模拟斗地主洗牌和发牌看牌,牌有序

        一副牌 54 张牌
        */
public class Landlord{
    public static void main(String[] args) {
        //创建牌盒
        HashMap<Integer, String> hm = new HashMap<>();
        //创建索引集合
        ArrayList<Integer> indexs = new ArrayList<>();
        //花色 和 序号
        String[] colors = {"♣", "♥", "♦", "♠"};
        String[] nums = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
        int index = 0;
        for (String num : nums) {
            for (String color : colors) {
                hm.put(index, num.concat(color));
                indexs.add(index);
                index++;
            }
        }
        hm.put(index, "大鬼");
        indexs.add(index);
        index++;
        hm.put(index, "小鬼");
        indexs.add(index);
        //System.out.println(hm);
        //System.out.println(indexs);
        //洗牌
        Collections.shuffle(indexs);
        //发牌
        TreeSet<Integer> 星仔 = new TreeSet<Integer>();
        TreeSet<Integer> 刀仔 = new TreeSet<Integer>();
        TreeSet<Integer> 高进 = new TreeSet<Integer>();
        TreeSet<Integer> 底牌 = new TreeSet<Integer>();
         //斗地主3个人  留一副底牌
        //发牌:一人一张轮流张发
        // 一次数好发给你
        // 星仔 =  pokerBox.subList(0, 17);
        //发牌:一人一张轮流发
        //星仔:0 3 6 9 12    取余  0
        //刀仔: 1 4 7 10 13   取余  1
        //高进: 2 5 8 11 14   取余  2

        for (int i = 0; i < indexs.size(); i++) {
            if (i >= indexs.size() - 3) {
                底牌.add(indexs.get(i));
            } else if (i % 3 == 0) {
                星仔.add(indexs.get(i));
            } else if (i % 3 == 1) {
                刀仔.add(indexs.get(i));
            } else {
                高进.add(indexs.get(i));
            }
        }
        //看牌,键找值
        lookPoker("星仔", 星仔, hm);
        lookPoker("刀仔", 刀仔, hm);
        lookPoker("高进", 高进, hm);
        lookPoker("底牌", 底牌, hm);


    }

    private static void lookPoker(String name, TreeSet<Integer> set, HashMap<Integer, String> hm) {
        System.out.println(name);
        for (Integer key : set) {
            System.out.print(hm.get(key) + " ");
        }
        System.out.println();
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值