利用集合完成鬥地主發,洗牌

2021-09-17 22:12:09 字數 1882 閱讀 7173

**3.2 案例需求分析

準備牌:

完成數字與紙牌的對映關係:

使用雙列map(hashmap)集合,完成乙個數字與字串紙牌的對應關係(相當於乙個字典)。

洗牌:通過數字完成洗牌發牌

發牌:將每個人以及底牌設計為arraylist,將最後3張牌直接存放於底牌,剩餘牌通過對3取模依次發牌。

存放的過程中要求數字大小與鬥地主規則的大小對應。

將代表不同紙牌的數字分配給不同的玩家與底牌。

看牌:通過map集合找到對應字元展示。

通過查詢紙牌與數字的對應關係,由數字轉成紙牌字串再進行展示。**

* 2 將54張牌順序打亂

*/// 取出編號 集合

setnumberset = pokermap.keyset();

// 因為要將編號打亂順序 所以 應該先進行轉換到 list集合中

arraylistnumberlist = new arraylist();

numberlist.addall(numberset);

// 打亂順序

collections.shuffle(numberlist);

// 3 完成三個玩家交替摸牌,每人17張牌,最後三張留作底牌

// 3.1 發牌的編號

// 建立三個玩家編號集合 和乙個 底牌編號集合

arraylistnop1 = new arraylist();

arraylistnop2 = new arraylist();

arraylistnop3 = new arraylist();

arraylistdipaino = new arraylist();

// 3.2發牌的編號

for (int i = 0; i < numberlist.size(); i++) else else if (i % 3 == 1) else }}

// 4 檢視三人各自手中的牌(按照牌的大小排序)、底牌

// 4.1 對手中編號進行排序

collections.sort(nop1);

collections.sort(nop2);

collections.sort(nop3);

collections.sort(dipaino);

// 4.2 進行牌面的轉換

// 建立三個玩家牌面集合 以及底牌牌面集合

arraylistplayer1 = new arraylist();

arraylistplayer2 = new arraylist();

arraylistplayer3 = new arraylist();

arraylistdipai = new arraylist();

// 4.3轉換

for (integer i : nop1)

for (integer i : nop2)

for (integer i : nop3)

for (integer i : dipaino)

檢視system.out.println("令狐沖:"+player1);

system.out.println("石破天:"+player2);

system.out.println("鳩摩智:"+player3);

system.out.println("底牌:"+dipai);

}

}結果展示

用Map集合模擬鬥地主洗牌發牌

具體規則 組裝54張撲克牌將 54張牌順序打亂 三個玩家參與遊戲,三人交替摸牌,每人17張牌,最後三張留作底牌。檢視三人各自手中的牌 按照牌的大小排序 底牌 規則 手中撲克牌從大到小的擺放順序 大王,小王,2,a,k,q,j,10,9,8,7,6,5,4,3 準備牌 大王 小王 2 a k q j ...

集合訓練之鬥地主洗牌發牌實現

2.1 任務功能流程 2.2 造牌功能分析 容器準備 建立集合容器,用於存放撲克牌 hashmappokermap 撲克牌存放容器,key保證唯一性,hashmap便於索引 arraylistpokerlist 撲克牌索引標誌,用於實現隨機取牌 發牌 造牌元素準備 建立陣列,儲存撲克牌組合元素,用於...

C 鬥地主洗牌分牌練習

using system public class initcard 大小王和四種花色 private string rank public string cards new string 4,14 從j從1算起,好記。public initcard cards 0,0 x0001 cards 1,...