按照斗地主的规则,完成洗牌发牌的动作。

知识点:

public class ArrayList<>集合:存放大小可变的内容.
Collections类的 shuffle()方法: 使用默认随机源对指定列表进行置换。
嵌套for循环: 外循环执行一次,内循环执行一轮。

/*
按照斗地主的规则,完成洗牌发牌的动作。
具体规则: 使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,后三张留作底牌。 
    斗地主综合案例
        1.准备牌
        2.洗牌
        3.发牌
        4.看牌
 */
public class DouDiZhu {
    public static void main(String[] args) {
        //调用方法.
        faPoKer();

    }

    // 创建一个方法 , 获取 所有的牌 , 并将顺序打乱 .
    public static ArrayList<String> getPoKer() {
        // 1. 准备牌
        //定义一个集合,存储54张牌牌
        ArrayList<String> pai = new ArrayList<>();

        //先把大小王放进去
        pai.add("大王");
        pai.add("小王");

        // 创建两个数组 , 存储花色和序号 .
        String[] huaSe = {"黑桃♠", "红桃♥", "梅花♣", "方片♦"};
        String[] num = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};

        // 循环嵌套两个数组 , 拼接牌
        for (int i = 0; i < huaSe.length; i++) {
            for (int j = 0; j < num.length; j++) {
                // 把所有的牌 拼接之后 装进集合中
                pai.add(huaSe[i] + num[j]);
            }
        }
        // System.out.println(pai);  输出所有的牌

        // 2 . 洗牌 - 把牌的顺序打乱 .
        Collections.shuffle(pai);

        return pai;
    }

    // 创建一个方法 , 进行发牌 和 看牌 .
    public static void faPoKer() {
        // 调用getPoker()方法拿到所有的牌
        ArrayList<String> poKer = getPoKer();

        // 创建四个集合 , 三个玩家和底牌
        ArrayList<String> person01 = new ArrayList<>();
        ArrayList<String> person02 = new ArrayList<>();
        ArrayList<String> person03 = new ArrayList<>();
        ArrayList<String> diPai = new ArrayList<>();

        // 遍历集合 , 发牌 .
        for (int i = 0; i < poKer.size(); i++) {
            // 得到牌
            String s = poKer.get(i);
            if (i >= 51) {  // 剩余的最后三张牌留下来作为底牌.
                diPai.add(s);
            } else if (i % 3 == 0) {   // 按顺序依次把牌交给各个玩家.
                person01.add(s);
            } else if (i % 3 == 1) {
                person02.add(s);
            } else if (i % 3 == 2) {
                person03.add(s);
            }
        }

        // 输出集合 , 4.看牌 .
        System.out.println("刘德华:" + person01);
        System.out.println("周润发:" + person02);
        System.out.println("周星驰:" + person03);
        System.out.println("底牌:" + diPai);

    }
}

运行结果如下:
这里写图片描述

可以看有序版本,通过牌的大小顺序来显示.
斗地主- -有序版本(通过Map集合编写)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值