Java 之斗地主

1.案例介绍

按照斗地主的规则,完成洗牌发牌的动作。 具体规则:
使用 54 张牌打乱顺序 , 三个玩家参与游戏,三人交替摸牌,每人 17 张牌,最后三张留作底牌。

2.案列分析

准备牌:
牌可以设计为一个 ArrayList, 每个字符串为一张牌。 每张牌由花色数字两部分组成,我们可以使用花色集合与数字集合嵌套迭代完成每张牌的组装。 牌由Collections 类的shuffle方法进行随机排序。
发牌:
将每个人以及底牌设计为 ArrayList, 将最后 3 张牌直接存放于底牌,剩余牌通过对 3 取模依次发牌。
看牌:
直接打印每个集合。

3.代码实现

public class PoKer {
    public static void main(String[] args) {
        /*
        1.准备牌
         */
        //1.1准备牌盒
        ArrayList pokerBox = new ArrayList<>();
        //1.2创建花色集合
        ArrayList colors = new ArrayList<>();
        //1.3创建数字集合
        ArrayList numbers = new ArrayList<>();
        //1.4 将花色 数字 添加的牌盒集合里面
        colors.add("♠");
        colors.add("♥");
        colors.add("♣");
        colors.add("♦");


        for (int i = 2; i <= 10; i++) {
            numbers.add(i+" ");
        }
        numbers.add("A");
        numbers.add("J");
        numbers.add("Q");
        numbers.add("K");

        //1.5 拼接牌 花色加数字
        for (String color : colors) {
            for (String number : numbers) {
                String card = color + number;
                pokerBox.add(card);
            }
        }

        // 大王 小王
        pokerBox.add("大王");
        pokerBox.add("小王");

        System.out.println(pokerBox);
        // 洗牌 是不是就是将 牌盒中 牌的索引打乱
        // Collections类 工具类 都是 静态方法
        // shuffer方法
        /* static void shuffle(List list)
         使用默认随机源对指定列表进行置换。
         */
        //2:洗牌
        Collections.shuffle(pokerBox);
        //3.发牌
        //创建三个玩家: 三个玩家集合 +底牌集合
        ArrayList wanjia1 = new ArrayList<>();
        ArrayList wanjia2 = new ArrayList<>();
        ArrayList wanjia3 = new ArrayList<>();

        ArrayList dipai = new ArrayList<>();

        //遍历牌盒 必须知道索引
        for (int i = 0; i < pokerBox.size(); i++) {
            //获取 牌面
            String card = pokerBox.get(i);
            //留三张牌 当做底牌
            if (i>=51){//存到底牌集合
                dipai.add(card);
            }else {//玩家1
                if (i%3==0){
                    wanjia1.add(card);
                }else if (i%3==1){//玩家2
                    wanjia2.add(card);
                }else {//玩家3
                    wanjia3.add(card);
                }
            }
        }

        //看牌
        System.out.println("张三"+ wanjia1);
        System.out.println("李四"+ wanjia2);
        System.out.println("王五"+ wanjia3);
        System.out.println("底牌"+ dipai);

    }
}

 

 

你可能感兴趣的:(数组,题库)