• Java日志第33天 2020.8.7


    斗地主综合案例

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

    具体规则:

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

    import java.util.ArrayList;
    import java.util.Collections;
    
    public class DouDiZhu {
        public static void main(String[] args) {
            //定义一个存储54张牌的ArrayList集合,泛型使用String
            ArrayList<String> poker = new ArrayList<>();
    
            //定义两个数组,一个存储点数,一个存储花色
            String[] colors = {"♥", "♦", "♠", "♣"};
            String[] numbers = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
    
            //组合牌的花色和点数
            for (String color : colors) {
                for (String number : numbers) {
                    poker.add(color + number);
                }
            }
            poker.add("大王");
            poker.add("小王");
    
            /*
                洗牌
                使用集合的工具类Collections中的方法
                static void shuffle(List<?> list) 使用默认随机源对指定列表进行置换
             */
            Collections.shuffle(poker);
    
            //发牌
    
            //定义四个集合,分别为三个玩家和底牌
            ArrayList<String> player01 = new ArrayList<>();
            ArrayList<String> player02 = new ArrayList<>();
            ArrayList<String> player03 = new ArrayList<>();
            ArrayList<String> diPai = new ArrayList<>();
    
            for (int i = 0; i < poker.size(); i++) {
                String s = poker.get(i);
    
                if(i>=51){
                    //发牌给底牌
                    diPai.add(s);
                }else{
                    int p = i%3;
                    switch (p){
                        //给玩家1发牌
                        case 0:player01.add(s);break;
                        //给玩家1发牌
                        case 1:player02.add(s);break;
                        //给玩家1发牌
                        case 2:player03.add(s);break;
                    }
                }
            }
    
            //看牌
            System.out.println("player01:"+player01);
            System.out.println("player02:"+player02);
            System.out.println("player03:"+player03);
            System.out.println("底牌:"+diPai);
        }
    }

    结果如下:

    明天进行异常的学习,其实以前已经看过书了,明天看视频,查漏补缺。

  • 相关阅读:
    从菜鸟腾飞至专家(我的心得)
    SQL 绕圈算法???
    asp access 时间段
    SQL 绕圈算法2???
    月薪三万的一道面试题
    Java方法参数是引用调用还是值调用?——值调用
    简述一个大型交易网站的发展旅程
    Java分布式应用学习笔记04JDK的并发包的集合总结
    ORACLE 执行计划中cost cardinality bytes cpu_cost io_cost解释
    剖析float型的内存存储和精度丢失问题
  • 原文地址:https://www.cnblogs.com/Gazikel/p/13451930.html
Copyright © 2020-2023  润新知