JAVA斗地主洗牌、发牌、整理手牌顺序

DAY1-JAVA斗地主洗牌、发牌、整理手牌顺序

1. 创建54张牌(通过花色跟数字组合来更快的创建)

	// 扑克牌
    List<String> pokes = new ArrayList<>();
    // 花色
    List<String> colors = new ArrayList<>();
    // 数字
    List<String> numbers = new ArrayList<>();
    // 存储扑克牌编号,方便排序
    List<Integer> array = new ArrayList<>();

    //添加花色
    colors.add("♣️");
    colors.add("♥️");
    colors.add("♦️");
    colors.add("♠️");
    //添加数字
    for (int i = 3; i <= 10; i++){
        numbers.add(i+"");
    }
    //添加扑克牌字母(按照扑克牌大小,最后将2添加进扑克牌中)
    numbers.add("J");
    numbers.add("Q");
    numbers.add("K");
    numbers.add("A");
    numbers.add(2+"");
    //将花色和数字进行循环拼接
    for (String n:numbers){
        for (String c:colors){
            String card = c + n;
            pokes.add(card);
        }
    }
    //添加"大小鬼"
    pokes.add("小王");
    pokes.add("大王");
    //打印拼接好的扑克牌
    System.out.println("拼接完成:"+pokes);
    //将排好序的扑克牌放入HashMap中,方便后续的玩家手牌按照大小整理排序
    HashMap<Integer, String> map = new HashMap<Integer, String>();
    int index = 0;
    for (String poke:pokes){
        map.put(index, pokes.get(index));
        array.add(index);
        index++;
    }

2. 洗牌

	//通过类名来调用Collections打乱列表(扑克牌)
    Collections.shuffle(array);
    //打印打乱的扑克牌
    System.out.println("洗牌后:"+array);

3. 留三张底牌、发牌

	//创建三名玩家,接收等下要发的牌(序号)。和底牌。
    TreeSet<Integer> XiaoMei = new TreeSet<Integer>();
    TreeSet<Integer> ZhangSan= new TreeSet<Integer>();
    TreeSet<Integer> LiSi = new TreeSet<Integer>();
    TreeSet<Integer> lastCard = new TreeSet<Integer>();
    for (int i = 0; i < array.size(); i++){
        //大于51的牌(即倒数后三张),放入底牌
        if (i >= 51){
            lastCard.add(array.get(i));
        }else{
            if (i % 3 == 0){
                XiaoMei.add(array.get(i));
            }else if (i % 3 == 1){
                ZhangSan.add(array.get(i));
            }else{
                LiSi.add(array.get(i));
            }
        }
    }
    System.out.println("玩家小美:"+XiaoMei);
    System.out.println("玩家张三:"+ZhangSan);
    System.out.println("玩家李四:"+LiSi);
    System.out.println("底牌:"+lastCard);

5.整理玩家手牌顺序

通过先前获取创建的三个玩家的TreeSet有序集合和存储扑克牌的HashMap键值信息取出对应的扑克牌信息
public static void poker(TreeSet<Integer> tree, HashMap<Integer,String> map){
    for(Integer key : tree){
        String value = map.get(key);
        System.out.print(value);
    }
    System.out.println();
}
	poker(XiaoMei,map);
    poker(ZhangSan,map);
    poker(LiSi,map);

最后,看看效果吧:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值