zoukankan      html  css  js  c++  java
  • Java进阶--集合泛型综合应用案例(斗地主)

    案例介绍


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

    案例分析

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

    代码实现

    package 集合和泛型.斗地主案例;
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Collections;
    
    public class Poker {
        public static void main(String[] args) {
            /*
             * 1: 准备牌操作
             */
            ArrayList<String> pokerBox = new ArrayList<>();
            ArrayList<String> colors = new ArrayList<>();
            ArrayList<String> numbers = new ArrayList<>();
    
            colors.add("♠");
            colors.add("♥");
            colors.add("♣");
            colors.add("♦");
    
            numbers.add("J");
            numbers.add("Q");
            numbers.add("K");
            numbers.add("A");
            for (int i = 2; i <= 10; i++) {
                numbers.add(i+"");
            }
            // 装牌
            pokerBox.add("小☠");
            pokerBox.add("大☠");
            for(String c:colors){
                for(String n:numbers){
                    pokerBox.add(c+n);
                }
            }
    
            // 洗牌
            Collections.shuffle(pokerBox);
    
            // 发牌
            ArrayList<String> palyer1 = new ArrayList<>();
            ArrayList<String> palyer2 = new ArrayList<>();
            ArrayList<String> palyer3 = new ArrayList<>();
            ArrayList<String> dipai = new ArrayList<>();
            
            for (int i = 0; i < pokerBox.size() ; i++) {
                String card = pokerBox.get(i);
                if(i >= 51){
    
                    dipai.add(card);
                }else {
                    if(i%3 == 0){
                        palyer1.add(card);
                    }else if(i%3 ==1){
                        palyer2.add(card);
                    }else{
                        palyer3.add(card);
                    }
                }
            }
            
            // 看牌
            System.out.println(palyer1);
            System.out.println(palyer2);
            System.out.println(palyer3);
            System.out.println(dipai);
    
         }
    }
    

    输出模拟结果

  • 相关阅读:
    计算机网络 其他1
    C++ part9
    C++ part8
    操作系统 part5
    C++ part7
    MyXls导出Excel的各种设置
    C# excel操作
    Castle
    C# Keycode对照表
    IEnumerable.Select和SelectMany的区别
  • 原文地址:https://www.cnblogs.com/sinlearn/p/13373092.html
Copyright © 2011-2022 走看看