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

2021-10-10 15:58:09 字數 1998 閱讀 9563

2.1 任務功能流程

2.2 造牌功能分析

容器準備:建立集合容器,用於存放撲克牌

hashmappokermap:撲克牌存放容器,key保證唯一性,hashmap便於索引

arraylistpokerlist:撲克牌索引標誌,用於實現隨機取牌、發牌

造牌元素準備:建立陣列,儲存撲克牌組合元素,用於後續遍歷造牌

string[

] colors =

;string[

] numbers =

;

組合造牌:遍歷撲克牌元素,組合造牌,儲存在容器中

// 1.造牌

// 撲克牌儲存標記,0、1代表大小王,2從最小的牌3開始標記

int index =2;

for(string number : numbers)

}// 補充大小王兩張牌

pokermap.

put(0,

"大王");

pokermap.

put(1,

"小王");

pokerlist.

add(0)

;pokerlist.

add(1)

;

2.3 洗牌功能分析

洗牌:對卡牌容器裡的撲克牌順序打亂

洗牌實現:

由於容器pokermap中的鍵與值一一對應,打亂卡牌容器,實質是打亂容器中的鍵

容器中的鍵與卡牌索引標記pokerlist集合內容一致

故可打亂pokerlist集合內容實現

2.4 發牌功能分析

發牌實質:由於卡牌的索引與卡牌一一對應,所以發牌實質發的是卡牌的索引

玩家準備:準備集合treeset(可實現自動排序),儲存玩家及底牌的卡牌

遍歷集合發牌:集合長度54,三個玩家每人17張牌,剩餘3張底牌

// 3.發牌

// 定義集合,儲存三個玩家以及底牌的撲克牌

treeset

player1 =

newtreeset

<

>()

;treeset

player2 =

newtreeset

<

>()

;treeset

player3 =

newtreeset

<

>()

;treeset

cards =

newtreeset

<

>()

;for

(int i =

0; i < pokerlist.

size()

; i++

)else

if(i %3==

0)else

if(i %3==

1)else

if(i %3==2)}

2.5 看牌功能分析

看牌實質:玩家集合的遍歷,從撲克牌集合pokermap獲取對應的卡牌

/**

* 看牌實現

* @param set 玩家卡牌集合

* @param pokermap 撲克牌集合

* @param name 玩家名稱

*/public

static

void

showpokers

(treeset

set, hashmap

pokermap, string name)

system.out.

println()

;}

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

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

鬥地主系列之洗牌和發牌

大家都知道,鬥地主的一副牌有54張,三位玩家,每位17張牌,3張底牌 17 3 3 54 所以,我們定義乙個list listcards new arraylist cards.get 0 cards.get 12 方塊3,方塊4 方塊k,方塊a,方塊2 cards.get 13 cards.get...

模擬鬥地主洗牌和發牌

分析 a 建立乙個牌盒 b 裝牌 c 洗牌 d 發牌 e 看牌 public class test system.out.println public static void main string args 定義乙個點陣列 string numbers for string c colors ar...