java集合--模拟斗地主发牌洗牌
Posted hqjava
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java集合--模拟斗地主发牌洗牌相关的知识,希望对你有一定的参考价值。
1 //模拟斗地主发牌洗牌 2 3 //导包 4 5 import java.util.ArrayList; 6 import java.util.Collections; 7 import java.util.HashMap; 8 9 public class Test { 10 public static void main(String[] args) { 11 //1.创建一副牌 12 HashMap<Integer, String> pk = new HashMap<>();//存整副牌 13 ArrayList<Integer> mark = new ArrayList<>();//存牌号() 14 15 //将大小王加入到整副牌中 16 pk.put(0, "大王"); 17 pk.put(1, "小王"); 18 mark.add(0); 19 mark.add(1); 20 21 String[] colors = {"♠", "♥", "♣", "♦"};//花色 22 String[] nums = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};//牌的大小顺序 23 24 int index = 2;//大小王已经加进去了所以从索引2开始加入 25 //双循环,外层为花色,内层为牌的大小,,外4内13 26 for (String num : nums) { 27 for (String color : colors) { 28 String pker = color + num;//将花色+牌数赋值给字符串 29 pk.put(index, pker);//再将字符串加入到整副牌中 30 mark.add(index);//将索引加入牌号中 31 index++; 32 } 33 } 34 35 //2.洗牌 36 Collections.shuffle(mark);//将牌号顺序打乱 37 38 //3.发牌 39 ArrayList<Integer> list1 = new ArrayList<>();//存玩家一(0,3,6...) 40 ArrayList<Integer> list2 = new ArrayList<>();//存玩家二(1,4,7...) 41 ArrayList<Integer> list3 = new ArrayList<>();//存玩家三(2,5,8...) 42 ArrayList<Integer> list4 = new ArrayList<>();//存底牌(51,52,53) 43 44 for (int i = 0; i < mark.size(); i++) { 45 Integer num = mark.get(i);//将牌号赋值给变量 46 if (i >= 51) { 47 list4.add(num);//将合适的牌号存入玩家对应玩家中 48 } else if (i % 3 == 0) { 49 list1.add(num); 50 } else if (i % 3 == 1) { 51 list2.add(num); 52 } else if (i % 3 == 2) { 53 list3.add(num); 54 } 55 } 56 57 //将三个玩家牌进行排序 58 Collections.sort(list1); 59 Collections.sort(list2); 60 Collections.sort(list3); 61 62 //4.看牌 63 showPK("玩家一", list1, pk);//将牌号和整副牌传过去 64 showPK("玩家二", list2, pk); 65 showPK("玩家三", list3, pk); 66 showPK("底 牌", list4, pk); 67 } 68 69 private static void showPK(String name, ArrayList<Integer> player, HashMap<Integer, String> pookerMap) { 70 System.out.print(name + ": "); 71 //循环玩家存储的牌号,在利用牌号去整副牌取出对应的牌 72 for (Integer pookerNum : player) { 73 String thisPooker = pookerMap.get(pookerNum); 74 System.out.print(thisPooker + " "); 75 } 76 System.out.println(); 77 } 78 }
玩家一: 大王 ♥2 ♣2 ♥A ♥K ♥Q ♣J ♠8 ♥8 ♣8 ♦8 ♠7 ♣7 ♥6 ♣5 ♥4 ♠3
玩家二: 小王 ♠2 ♦2 ♣A ♠Q ♣Q ♥J ♥10 ♠9 ♥9 ♦9 ♥7 ♠6 ♣6 ♦6 ♥5 ♣3
玩家三: ♠A ♦A ♠K ♣K ♦K ♦Q ♠J ♦J ♠10 ♦10 ♣9 ♦7 ♦5 ♠4 ♦4 ♥3 ♦3
底 牌: ♠5 ♣10 ♣4
以上是关于java集合--模拟斗地主发牌洗牌的主要内容,如果未能解决你的问题,请参考以下文章
java 18 - 12 模拟斗地主洗牌发牌,并对发的牌进行排序
Map集合HashMap集合LinkedHashMap集合Hashtable集合Collections工具类和模拟斗地主洗牌和发牌