1. 程式人生 > >鬥地主洗牌發牌測試類

鬥地主洗牌發牌測試類

aps add dip maps length 方塊 大王 import sin

 1 package com.hxl;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collections;
 5 import java.util.HashMap;
 6 import java.util.TreeSet;
 7 
 8 /**
 9  * 這是一個鬥地主洗牌發牌的測試類
10  * 
11  * @author Schiller_Hu
12  * @version v1.0
13  * @since 2018.2.20
14  * 
15  */
16 
17 public class Test {
18     public
static void main(String[] args) { 19 // 定義花色數組 20 String[] color = { "黑桃", "紅桃", "梅花", "方塊" }; 21 // 定義點數數組 22 String[] point = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", 23 "K", "A", "2" }; 24 // 定義ArrayList集合,存儲卡牌對應的唯一的編號 25 ArrayList<Integer> cardNums = new
ArrayList<Integer>(); 26 // 實例化HashMap存儲映射關系,序號與對應卡牌 27 HashMap<Integer, String> cardMaps = new HashMap<Integer, String>(); 28 // 編號變量 29 int num = 0; 30 // 組合點數與花色,生成所有卡牌,存入鍵值對與單列集合ArrayList中 31 for (int i = 0; i < point.length; i++) { 32
for (int j = 0; j < color.length; j++) { 33 cardMaps.put(num, color[j] + point[i]); 34 cardNums.add(num); 35 num++; 36 } 37 } 38 // 再加上大小王 39 cardMaps.put(num, "小王"); 40 cardNums.add(num); 41 num++; 42 cardMaps.put(num, "大王"); 43 cardNums.add(num); 44 45 // 洗牌,打亂ArrayList中元素的編號,在按該亂序發牌 46 Collections.shuffle(cardNums); 47 48 // 先定義存放四份牌的容器,分別是玩家1、玩家2、玩家3、底牌(發剩下的3張牌) 49 TreeSet<Integer> player1 = new TreeSet<Integer>(); 50 TreeSet<Integer> player2 = new TreeSet<Integer>(); 51 TreeSet<Integer> player3 = new TreeSet<Integer>(); 52 TreeSet<Integer> diPai = new TreeSet<Integer>(); 53 54 // 給三個人發牌,留3張做底牌,就是發編號 55 for (int i = 0; i < cardNums.size(); i++) { 56 if (i >= cardNums.size() - 3) { 57 diPai.add(cardNums.get(i)); 58 } else if (i % 3 == 0) { 59 player1.add(cardNums.get(i)); 60 } else if (i % 3 == 1) { 61 player2.add(cardNums.get(i)); 62 } else if (i % 3 == 2) { 63 player3.add(cardNums.get(i)); 64 } 65 } 66 // 看牌 67 lookCards("玩家1", player1, cardMaps); 68 lookCards("玩家2", player2, cardMaps); 69 lookCards("玩家3", player3, cardMaps); 70 lookCards("底牌", diPai, cardMaps); 71 } 72 73 /** 74 * 看牌方法,我們得到的是牌的編號,要還原為牌的花色點數本身 75 * 76 * @param name 77 * 玩家名稱 78 * @param cardNums 79 * 該玩家所獲得的編號集合 80 * @param cardMaps 81 * 編號與卡牌的映射集合 82 */ 83 public static void lookCards(String name, TreeSet<Integer> player, 84 HashMap<Integer, String> cardMaps) { 85 System.out.print(name + ":"); 86 for (Integer i : player) { 87 System.out.print(cardMaps.get(i) + ","); 88 } 89 System.out.println(); 90 } 91 }

鬥地主洗牌發牌測試類