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张作为底牌,一人—张轮流发牌:集合的索引(O-53)%3

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

索引%2,有两个值(0,1)0%62=O 19%2=1 2%2=O 39%2=1

索引%3,有三个值(0,1,2) 0%3=0 19%3=1 29%63=2 3%3=o

索引>=51改底牌发牌

4.看牌:

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

分析图:

 

 

案例的代码实现:

斗地主综合案例:

1.准备牌

2.洗牌

3.发牌

4.看牌

ArrayList<String> list = new ArrayList<>();
        String[] colors = {"♠","♥","♣","♦"};
        String[] numbers = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
        list.add("大王");
        list.add("小王");
        for (String number:numbers){
            for (String color: colors){
                //System.out.println(color+number);
                list.add(color+number);
            }
        }

        Collections.shuffle(list);
        ArrayList<String> list1 = new ArrayList<>();
        ArrayList<String> list2 = new ArrayList<>();
        ArrayList<String> list3 = new ArrayList<>();
        ArrayList<String> diPai = new ArrayList<>();

        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            if (i>=51){
                diPai.add(s);
            }else if (i%3==0){
                list1.add(s);
            }else if (i%3==1){
                list2.add(s);
            }else if (i%3==2){
                list3.add(s);
            }
        }
        System.out.println("刘德华"+list1);
        System.out.println("周星驰"+list2);
        System.out.println("发哥"+list3);
        System.out.println("达叔"+diPai);
    }

 

posted on 2022-07-05 14:04  淤泥不染  阅读(79)  评论(0)    收藏  举报