斗地主案例(使用HashMap)

Posted 0error0warning

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了斗地主案例(使用HashMap)相关的知识,希望对你有一定的参考价值。

代码:

 1 import java.util.*;
 2 
 3 public class Poker2 {
 4     public static void main(String[] args) {
 5         /*
 6          * 1组装54张扑克牌
 7          */
 8         //1.1创建Map集合储存
 9         HashMap<Integer, String> pokerMap = new HashMap<>();
10         // 1.2 创建 花色集合 与 数字集合
11         ArrayList<String> colors = new ArrayList<>();
12         ArrayList<String> numbers = new ArrayList<>();
13         // 1.3 存储 花色 与数字
14         Collections.addAll(colors, "♦", "♣", "♥", "♠");
15         Collections.addAll(numbers, "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3", "2");
16         // 设置 存储编号变量
17         int count = 0;
18         // 1.4 创建牌 存储到map集合中
19         pokerMap.put(count, "大?");
20         pokerMap.put(count++, "小?");
21         for (String color : colors) {
22             for (String number : numbers) {
23                 String card = color + number;
24                 pokerMap.put(count++, card);
25             }
26         }
27         /*
28          *2 将54张牌顺序打乱
29          */
30         // 取出编号 集合
31         Set<Integer> numberSet = pokerMap.keySet();
32         // 因为要将编号打乱顺序 所以 应该先进行转换到 list集合中
33         ArrayList<Integer> numberList = new ArrayList<>();
34         numberList.addAll(numberSet);
35         //打乱顺序
36         Collections.shuffle(numberList);
37         /*
38          *3 完成三个玩家交替摸牌,每人17张牌,最后三张留作底牌
39          */
40         // 3.1 发牌的编号
41         // 创建三个玩家编号集合 和一个 底牌编号集合
42         ArrayList<Integer> noP1 = new ArrayList<Integer>();
43         ArrayList<Integer> noP2 = new ArrayList<Integer>();
44         ArrayList<Integer> noP3 = new ArrayList<Integer>();
45         ArrayList<Integer> dipaiNo = new ArrayList<Integer>();
46         // 3.2发牌的编号
47         for (int i = 0; i < numberList.size(); i++) {
48             //获取该编号
49             Integer integer = numberList.get(i);
50             if (i >= 51) {
51                 dipaiNo.add(integer);
52             }
53             if (i % 3 == 0) {
54                 noP1.add(integer);
55             } else if (i % 3 == 1) {
56                 noP2.add(integer);
57             } else {
58                 noP3.add(integer);
59             }
60         }
61         /*
62          *4 查看三人各自手中的牌(按照牌的大小排序)、底牌
63          */
64         // 4.1 对手中编号进行排序
65       /*  Collections.sort(noP1);
66         Collections.sort(noP2);
67         Collections.sort(noP3);
68         Collections.sort(dipaiNo);*/
69         // 4.2 进行牌面的转换
70         // 创建三个玩家牌面集合 以及底牌牌面集合
71         ArrayList<String> player1 = new ArrayList<String>();
72         ArrayList<String> player2 = new ArrayList<String>();
73         ArrayList<String> player3 = new ArrayList<String>();
74         ArrayList<String> dipai = new ArrayList<String>();
75         for (Integer i : noP1) {
76             String str = pokerMap.get(i);
77             player1.add(str);
78         }
79         for (Integer i : noP2) {
80             String str = pokerMap.get(i);
81             player2.add(str);
82         }
83         for (Integer i : noP3) {
84             String str = pokerMap.get(i);
85             player3.add(str);
86         }
87         for (Integer i : dipaiNo) {
88             String str = pokerMap.get(i);
89             dipai.add(str);
90         }
91         //4.5 查看
92         System.out.println("令狐冲:" + player1);
93         System.out.println("石破天:" + player2);
94         System.out.println("鸠摩智:" + player3);
95         System.out.println("底牌:" + dipai);
96 
97     }
98 }

 

以上是关于斗地主案例(使用HashMap)的主要内容,如果未能解决你的问题,请参考以下文章

斗地主2.0

JAVA零基础小白学习免费教程day14-Set&HashMap

JAVA零基础小白学习免费教程day14-Set&HashMap

代码实现:模拟斗地主洗牌和发牌并对牌进行排序的代码实现

Java学习笔记34(集合框架八:综合案例:模拟斗地主的洗牌发牌)

练习---斗地主案例分析和代码实现