斗地主案例(使用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)的主要内容,如果未能解决你的问题,请参考以下文章
JAVA零基础小白学习免费教程day14-Set&HashMap
JAVA零基础小白学习免费教程day14-Set&HashMap