15 鬥地主案例 雙列

2021-10-16 22:02:28 字數 2603 閱讀 9109

* 鬥地主綜合案例:有序版本

* 1.準備牌:

* 特殊牌:大王,小王

* 52張牌:迴圈巢狀遍歷兩個集合(或陣列),組成成52張牌

* listcolors=new arraylist<>();

* listnumbers=new arraylist<>();

* collections.addall(colors,"♠","♥","♣","◆");

* collections.addall(numbers,"2","a","k"..."3");

* 本次54張牌用map集合來接收,其中

* map集合中鍵表示牌的索引,值為組裝好的牌

* 2.洗牌:

* 將map集合中key(組裝牌的索引)儲存在list集合中,並由collections集合工具類

* 中的shuffle(list)方法將list集合打亂順序。

* 3.發牌:

* 一人一張輪流發牌,每人17張,通過索引%3分給三人,最後剩3張牌作為底牌。

* 因此要建立4個集合list,每個集合存放的map集合中的key,即組裝牌的索引。

* 4.排序:

* 使用collections工具類中的sort(list)方法排序

* 5.看牌:

* 可以使用查表法

* 遍歷乙個集合list,獲取到另外乙個集合的key,通過key查詢到value

* 遍歷玩家和底牌的list,獲取到map集合的key,通過key找到value.

public class doudizhu

}system.out.println(poker);

system.out.println(pokerindex);

/*map集合(poker)中組裝牌與索引對映關係:* *

*pokerindex集合中記錄了乙份組裝牌的索引,下面要將其打亂分發給3個玩家

* [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,

* 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,

* 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53]

* */

/*** 2.洗牌:洗的是牌的索引

*///使用collections集合工具類中的shuffle(list)方法進行打亂順序,洗牌:洗的是牌的索引

collections.shuffle(pokerindex);

/*** 3.發牌:定義4個集合,儲存3個玩家牌的索引和底牌的索引

*/arraylistplay01 = new arraylist<>();

arraylistplay02 = new arraylist<>();

arraylistplay03 = new arraylist<>();

arraylistdipai = new arraylist<>();

//遍歷儲存組裝牌索引的pokerindex集合,獲取每乙個牌的索引

for (int i=0;i=51)else if(i%3==0)else if(i%3==1)else if(i%3==2)

}/**

* 4.排序

* 使用collections集合工具類中的sort方法對玩家的集合排序

* 預設是公升序排序。

*/collections.sort(play01);

collections.sort(play02);

collections.sort(play03);

collections.sort(dipai);

system.out.println("..........................................");

/*** 5.看牌

* 呼叫看牌的方法lookpoker

*/lookpoker("蕭炎",poker,play01);

lookpoker("彩鱗",poker,play02);

lookpoker("雲芝",poker,play03);

lookpoker("底牌",poker,dipai);

}/**

** 定義乙個看牌的方法,提高**復用性

* 引數:

* string name:玩家名稱

* hashmappoker:儲存牌的poker集合

* arraylistlist:儲存玩家和底牌的list集合

*/public static void lookpoker(string name,hashmappoker,

arraylistlist)

system.out.println();//列印完每乙個玩家的牌,換行。}}

鬥地主案例(雙列集合)

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

12 鬥地主案例的實現

題目 實現三人玩鬥地主的案例 分析 1.首先要有乙個大集合儲存54張牌 乙個陣列儲存牌的花色 乙個陣列儲存牌的大小 將這兩個陣列組合儲存到大集合中 2.洗牌 使用工具類collection的方法 static void shuffle list list 使用指定的隨機源對 指定列表進行置換 3.發...

案例 鬥地主

案例分析 1 準備 準備54張牌,儲存到一的集合中,特殊牌大小王。其他52張牌 定義乙個陣列 集合,儲存4種花色 定義乙個陣列 集合,儲存13個符號1 2 3 4 5 迴圈遍歷兩個陣列 集合,組裝52張牌,儲存到乙個集合中。5,2,a 再加上大?和小?2 洗牌 使用集合工具collections的方...