斗地主案例

分析

1、准备牌:54张牌,存储到一个集合中

特殊牌:大王,小王

其他52张牌:

  定义一个数组/集合,存储4种花色:♠,,♣,

  定义一个数组/集合,存储13个序号:2,A,K...3

循环嵌套遍历两个数组/集合,组装52张牌

  ♠2,♠A,♠K...♠3,♥2,♥A,♥K...♥3

  ....

2.洗牌

  使用集合工具类Collections的方法

  static void shuffle(List<?> list) 使用指定的随机源对指定列表进行置换。

  会随机的打乱集合中元素的顺序

3.发牌

  要求:1人17张牌,剩余3张作为底牌,一人一张轮流发牌:集合的索引(0-53)%3

  定义4个集合,存储3个玩家的牌和底牌

  索引%2,有两个值(0,1) 0%2=0 1%2=1 2%2=0 3%2=1

  索引%3,有三个值(0,1,2) 0%3=0 1%3=1 2%3=2 3%3=0

  索引>=51 改底牌发牌

4.看牌

  直接打印集合,遍历存储玩家和底牌的集合

 

 

public class DouDiZhu {
    public static void main(String[] args) {
        ArrayList<String> poker = new ArrayList<>();
        //创建花色
        String[] color = {"♦","♠","♥","♣"};
        //创建点数
        String[] num = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
        //存入HasMap
        poker.add("大王");
        poker.add("小王");
        for (String numa : num){
            for (String col : color){
                poker.add(col+numa);
            }
        }
        //洗牌
        Collections.shuffle(poker);
        //玩家和底牌
        TreeSet<String> Tset1 = new TreeSet<>();
        TreeSet<String> Tset2 = new TreeSet<>();
        TreeSet<String> Tset3 = new TreeSet<>();
        TreeSet<String> Dset4 = new TreeSet<>();
        //分牌
        for (int i = 0; i < poker.size(); i++) {
            String integer = poker.get(i);
            if (i>=51){
                Dset4.add(integer);
            }else if (i%3==0){
                Tset1.add(integer);
            }else if (i%3==1){
                Tset2.add(integer);
            }else if (i%3==2){
                Tset3.add(integer);
            }
        }
        lookPoker("张三",Tset1);
        lookPoker("李四",Tset2);
        lookPoker("王五",Tset3);
        lookPoker("底牌",Dset4);
    }

    public static void lookPoker(String name, TreeSet<String> play) {
        System.out.print(name + "的牌是:");
        for (String i : play) {
            System.out.print(i + " ");
        }
        System.out.println("");
    }

}

 

 

 

 

 

 

 

posted @ 2022-07-05 15:08  魔光领域  阅读(110)  评论(0编辑  收藏  举报