zoukankan      html  css  js  c++  java
  • 模拟斗地主洗牌发牌

    模拟斗地主洗牌发牌

    3.1 案例介绍

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

    具体规则:

    1. 组装54张扑克牌将
    2. 54张牌顺序打乱
    3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
    4. 查看三人各自手中的牌(按照牌的大小排序)、底牌

    规则:手中扑克牌从大到小的摆放顺序:大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3

    3.2 案例需求分析

    1. 准备牌:

    完成数字与纸牌的映射关系:

    使用双列Map(HashMap)集合,完成一个数字与字符串纸牌的对应关系(相当于一个字典)。

    1. 洗牌:

    通过数字完成洗牌发牌

    1. 发牌:

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

    存放的过程中要求数字大小与斗地主规则的大小对应。

    将代表不同纸牌的数字分配给不同的玩家与底牌。

    1. 看牌:

    通过Map集合找到对应字符展示。

    通过查询纸牌与数字的对应关系,由数字转成纸牌字符串再进行展示。

    public static void main(String[] args) {
            // 1.准备牌
            // 创建一个Map集合,存储牌的索引和组装好的牌
            HashMap<Integer,String> poker = new HashMap<>();
            // 创建一个List集合,存储牌的索引
            List<Integer> pokerIndex = new ArrayList<>();
            // 定义两个集合,存储花色和牌的序号
            ArrayList<String> colors = List.of("♦", "♣", "♥", "♠");
            ArrayList<String> numbers =List.of("2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3");
            // 把大王和小王存储到集合中
            // 定义一个牌的索引
            int index = 0;
            poker.put(index,"大王");
            poker.Index.add(index);
            index++;
            poker.put(index,"小王");
            poker.Index.add(index);
            index++;
    
            //循环嵌套遍历两个集合,组装52张牌,存储到集合中
            for(String number:Numbers){
                for(String color:colors){
                    poker.put(index,color+number);
                    pokerIndex.add(index);
                    index++;
                }
            }
            System.out.println(poker);
            System.out.println(pokerIndex);
        }
    
  • 相关阅读:
    Gitblit 的安装使用
    PLSQL 美化规则文件详解
    SQL Server Agent的作用
    使用C#创建Widows服务
    关于VS编译DevExpress默认产生几个多余的语言包的问题解决
    (转)查询A、B表中,A表中存在B表不存在的数据
    子类构造、析构时调用父类的构造、析构函数顺序
    ACCDB与MDB的读取区别
    vue中如何动态添加readonly属性
    windows下生成文件夹目录结构
  • 原文地址:https://www.cnblogs.com/anke-z/p/12585040.html
Copyright © 2011-2022 走看看