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

使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。

分析:

  • 准备牌:

    牌可以设计为一个ArrayList,每个字符串为一张牌。
    每张牌由花色数字两部分组成,我们可以使用花色集合与数字集合嵌套迭代完成每张牌的组装。
    牌由Collections类的shuffle方法进行随机排序。

  • 发牌

    将每个人以及底牌设计为ArrayList,将最后3张牌直接存放于底牌,剩余牌通过对3取模依次发牌。

  • 看牌

    直接打印每个集合。

public static void main(String[] args) {
        //1.创建一个牌盒
        ArrayList<String> pokerBox = new ArrayList<String>();
        //2.创建四个花色
        ArrayList<String> colors = new ArrayList<String>();
        //3.创建扑克牌点数
        ArrayList<String> numbers = new ArrayList<String>();
        //添加花色
        colors.add("♠");//黑桃
        colors.add("♥");//红桃
        colors.add("♦");//方块
        colors.add("♣");//梅花
        //添加扑克牌点数
        for(int i = 2 ; i <= 10 ; i++){
            numbers.add(i+"");
        }
        //添加J,Q,K,A点数
        numbers.add("J");
        numbers.add("Q");
        numbers.add("K");
        numbers.add("A");
        //将花色和点数结合放进扑克盒中
        for (String color : colors) {
            for (String number : numbers) {
                String s = color + number;
                pokerBox.add(s);
            }
        }
        //增加大小王
        pokerBox.add("大王");
        pokerBox.add("小王");
        //模拟洗牌
        Collections.shuffle(pokerBox);
        //三个人打扑克
        ArrayList<String> personA = new ArrayList<String>();
        ArrayList<String> personB = new ArrayList<String>();
        ArrayList<String> personC = new ArrayList<String>();
        for(int i = 0 ; i < 17 ; i++){
            for(int j = 0 ; j < 3 ; j ++){
                int num = i * 0 + j;
                String remove = pokerBox.remove(num);
                if( j == 0 ){ personA.add(remove);}
                if( j == 1){ personB.add(remove);}
                if(j == 2){personC.add(remove);}
            }
        }
        //打印输出
        System.out.println("personA抽到的牌有:");
        for (String s : personA) {
            System.out.print(s+" ");
        }
        System.out.println("\n");
        System.out.println("personB抽到的牌有:");
        for (String s : personB) {
            System.out.print(s+" ");
        }
        System.out.println("\n");
        System.out.println("personC抽到的牌有:");
        for (String s : personC) {
            System.out.print(s+" ");
        }
        //输出剩余的三张底牌
        System.out.println("\n");
        System.out.println("三张底牌为:");
        for (String box : pokerBox) {
            System.out.print(box+" ");
        }
    }

输出结果: