模拟斗地主洗牌发牌

模拟斗地主洗牌发牌

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);
    }
posted @ 2020-03-27 23:15  _Anke  阅读(295)  评论(0编辑  收藏  举报