案例介紹
按照鬥地主的規則,完成洗牌發牌的動作。
具體規則:
組裝54張撲克牌將
54張牌順序打亂
三個玩家參與遊戲,三人交替摸牌,每人17張牌,最後三張留作底牌。
檢視三人各自手中的牌(按照牌的大小排序)、底牌
規則:手中撲克牌從大到小的擺放順序:大王,小王,2,a,k,q,j,10,9,8,7,6,5,4,3案例需求分析
準備牌:
完成數字與紙牌的對映關係:
使用雙列map(hashmap)集合,完成乙個數字與字串紙牌的對應關係(相當於乙個字典)。
洗牌:
通過數字完成洗牌發牌
發牌:
將每個人以及底牌設計為arraylist,將最後3張牌直接存放於底牌,剩餘牌通過對3取模依次發牌。
存放的過程中要求數字大小與鬥地主規則的大小對應。
將代表不同紙牌的數字分配給不同的玩家與底牌。
看牌:
通過map集合找到對應字元展示。
通過查詢紙牌與數字的對應關係,由數字轉成紙牌字串再進行展示。
實現**步驟
public
class
poker}/*
* 2 將54張牌順序打亂
*/// 取出編號 集合
setnumberset = pokermap.
keyset()
;// 因為要將編號打亂順序 所以 應該先進行轉換到 list集合中
arraylist
numberlist =
newarraylist
(); numberlist.
addall
(numberset)
;// 打亂順序
collections.
shuffle
(numberlist)
;// 3 完成三個玩家交替摸牌,每人17張牌,最後三張留作底牌
// 3.1 發牌的編號
// 建立三個玩家編號集合 和乙個 底牌編號集合
arraylist
nop1 =
newarraylist
(); arraylist
nop2 =
newarraylist
(); arraylist
nop3 =
newarraylist
(); arraylist
dipaino =
newarraylist
();// 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 進行牌面的轉換
// 建立三個玩家牌面集合 以及底牌牌面集合
arraylist
player1 =
newarraylist
(); arraylist
player2 =
newarraylist
(); arraylist
player3 =
newarraylist
(); arraylist
dipai =
newarraylist
();// 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);}
}
15 鬥地主案例 雙列
鬥地主綜合案例 有序版本 1.準備牌 特殊牌 大王,小王 52張牌 迴圈巢狀遍歷兩個集合 或陣列 組成成52張牌 listcolors new arraylist listnumbers new arraylist collections.addall colors,collections.adda...
集合案例 鬥地主
1.準備牌 54張牌,儲存到乙個集合中 特殊牌 大王,小王其他52張牌 定義乙個陣列 集合,儲存4種花色 黑 紅 梅 方 定義乙個陣列 集合,儲存13個序號 2,a k q 4 3 迴圈巢狀遍歷兩個陣列 集合組裝52張牌 2.洗牌 使用集合工具類collections的方法 static void ...
用集合實現鬥地主案例
public class dealcards string str2 存放所有牌的集合 arraylist list newarraylist 存放玩家一的手牌 arraylist list1 newarraylist 存放玩家二的手牌 arraylist list2 newarraylist 存放...