斗地主发牌、洗牌简单案例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/k_korol/article/details/82663430
package demo_斗地主练习案例;

import java.util.*;

public class Demo {
    public static void main(String[] args) {
        //封装牌面
        Map<Integer, String> pokerMap = new HashMap<>();

        String[] colors = {"♥", "♠", "♦", "♣"};
        String[] numbers = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};

        int index = 0;

        pokerMap.put(index++, "大王");
        pokerMap.put(index++, "小王");

        for (String number : numbers) {
            for (String color : colors) {
                pokerMap.put(index++, color + number);
            }
        }
        //制作一个保存编号的list
        Set<Integer> set = pokerMap.keySet();
        ArrayList<Integer> list = new ArrayList<>();
        list.addAll(set);
        //使用工具类:Collections的shuffle()方法达成洗牌效果
        Collections.shuffle(list);
        //创建玩家,完成发牌效果
        ArrayList<Integer> user1 = new ArrayList<>();
        ArrayList<Integer> user2 = new ArrayList<>();
        ArrayList<Integer> user3 = new ArrayList<>();
        ArrayList<Integer> dipai = new ArrayList<>();

        for (int i = 0; i < list.size(); i++) {
            if (i >= list.size() - 3) {
                dipai.add(list.get(i));
            } else {
                if (i % 3 == 0) {
                    user1.add(list.get(i));
                } else if (i % 3 == 1) {
                    user2.add(list.get(i));
                } else {
                    user3.add(list.get(i));
                }
            }
        }
        //排序,显示牌面从大到小的效果
        Collections.sort(user1);
        Collections.sort(user2);
        Collections.sort(user3);
        //完成看牌效果
        System.out.println("第一个玩家:" + getPoker(user1, pokerMap));
        System.out.println("第二个玩家:" + getPoker(user2, pokerMap));
        System.out.println("第三个玩家:" + getPoker(user3, pokerMap));
        System.out.println("  底牌:" + getPoker(dipai, pokerMap));

    }
    //创建方法,获取每个玩家的牌面
    public static String getPoker(ArrayList<Integer> list, Map<Integer, String> map) {
        StringBuilder bld = new StringBuilder("[");

        for (int i = 0; i < list.size(); i++) {
            bld.append(map.get(list.get(i)));
            if (i < list.size() - 1) {//判断是否为最后一个元素
                bld.append(",");
            } else {
                bld.append("]");
            }
        }
        return bld.toString();
    }
}

猜你喜欢

转载自blog.csdn.net/k_korol/article/details/82663430
今日推荐