模拟 斗地主洗牌 发牌操作

*准备牌 洗牌 发牌操作

public class DouDiZhu{
    public static void main(String[] args) {
        // 1. 准备牌
        // 1.1 创建存储牌面的集合
        List<String> pakerBox = new ArrayList<>();

        // 造牌
        // 1.2 创建花色集合 存储花色
        List<String> colors = new ArrayList<>();
        colors.add("❤");
        colors.add("♣");
        colors.add("♠");
        colors.add("♦");

        // 1.3 创建数字集合 存储数字
        List<String> numbers = new ArrayList<>();
        for(int i = 2; i<=10; i++){
            numbers.add(i+"");
        }
        numbers.add("J");
        numbers.add("Q");
        numbers.add("K");
        numbers.add("A");

        // 1.4 遍历 并拼接
        for (String color : colors){
            for (String number : numbers){
                String card = color + number;
                // 存牌 在盒中
                pakerBox.add(card);

            }
        }

        pakerBox.add("小王");
        pakerBox.add("大王");

//        System.out.println(pakerBox);
        // 2. 洗牌
        Collections.shuffle(pakerBox);
        // 就可以将牌的顺序打乱
//        System.out.println(pakerBox);

        // 3. 发牌
        // 3.1 创建三个玩家以及底牌集合
        List<String> player1 = new ArrayList<>();
        List<String> player2 = new ArrayList<>();
        List<String> player3 = new ArrayList<>();
        List<String> dipai = new ArrayList<>();

        // 3.2 发牌按照索引决定发牌的顺序
        for (int i = 0 ; i < pakerBox.size(); i++){
            String card = pakerBox.get(i);

            // 这张牌给谁,通过索引解决
            // 先预留出底牌
            if(i>=51){
                dipai.add(card);
            } else {
                if (i % 3 == 0){
                    player1.add(card);
                } else if (i % 3 == 1){
                    player2.add(card);
                } else{
                    player3.add(card);
                }
            }
        }
        // 4. 查看牌
        System.out.println(player1);
        System.out.println(player2);
        System.out.println(player3);
        System.out.println(dipai);
    }
}

 *斗地主 模拟 洗牌.

/**
 * 斗地主 模拟 洗牌.
 * 牌数 : 54 张,  大王, 小王,   2-10 ,  A,J,Q , K  , 四个
 * ♥ , ♠ , ♣ , ♦
 * 1-10
 * ❤7      ♦7
 */
public class DouDiZhuTest {
    public static void main(String[] args) {
        // 1. 先造出 4个 花色
        List<String> colors = new ArrayList<>();
        colors.add("♥");
        colors.add("♠");
        colors.add("♣");
        colors.add("♦");
        // 2. 造出 10 个 2-10
        List<String> numbers = new ArrayList<>();
        for (int i = 2; i <= 10; i++) {
            numbers.add(i + "");
        }
        numbers.add("J");
        numbers.add("Q");
        numbers.add("K");
        numbers.add("A");

        // 3. 上面的   colors 和 number 进行一个 整合 .
        //  放入到一个 新的集合中  如何做到呢? 嵌套循环
        List<String> piker = new ArrayList<>();
        // Set<String> piker= new HashSet<>();
        for (String color : colors) {
            for (String number : numbers) {
                piker.add(color + number);
            }
        }
        piker.add("BigKing");
        piker.add("littleKing");
        System.out.println("piker = " + piker);
        System.out.println("piker = " + piker.size());
        // 如果 使用set 也无法分开排序, 改为list,有个方法可以 打乱他的排序, 只能打断 list,
        // 因 set 无序的.
        Collections.shuffle(piker); // 打断list 的排序  斗地主的学名 洗牌
        System.out.println("piker = " + piker);
        // 给 player1 player2 player3 发牌.
        List<String> player1 = new ArrayList<>(); //  玩家1
        List<String> player2 = new ArrayList<>(); //  玩家2
        List<String> player3 = new ArrayList<>(); //  玩家3
        List<String> diPai = new ArrayList<>(); // 3张底牌
        for (int i = 0; i < piker.size(); i++) {
            String pName = piker.get(i); // 每张扑克牌.
            if (i >= 51) {
                diPai.add(pName); // 埋最后3张的底牌.
            } else {
                // 给玩家1,2,3 发 前面 51张牌
                if (i % 3 == 0) {
                    player1.add(pName);
                } else if (i % 3 == 1) {
                    player2.add(pName);
                } else {
                    player3.add(pName);
                }
            }
        }
        System.out.println("diPai = " + diPai);
        System.out.println("player1 = " + player1);
        System.out.println("player1 = " + player1.size());
        System.out.println("player2 = " + player2);
        System.out.println("player2 = " + player2.size());
        System.out.println("player3 = " + player3);
        System.out.println("player3 = " + player3.size());


        Collections.sort(piker);  // list 的快速排序(不是人工指定的排序, 下节课讲 人工指定排序)
        System.out.println("piker = " + piker);

        }
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值