問題描述:3個人玩鬥地主,一共54張牌,編寫**完成洗牌、發牌、看牌。
問題分析:1.準備牌:一共有54張牌,2張牌特殊(大王、小王),剩下52張牌是數字1-9和♥、♦、♠、♣的兩兩組合。
用乙個list來存放花色,另乙個list來存放數字,兩兩組合得到52個值,加上大王和小王,一共54個值,放在hashmap的value中,牌的索引為key。
2.洗牌:將索引按順序放在乙個list中,用集合collections中的shuffle(list)方法,將索引的順序打亂,索引對應的value也被打亂。
3.發牌:一人一張輪流發牌,一共3個人,用集合索引%3,發給3個人,最後剩下的3張牌是庭牌。
4.排序:用collections的sort(list)方法,給每個玩家的牌和庭牌排序。
5.看牌:遍歷玩家和庭牌的list,獲取到map的key值,通過key找到value。
**編寫:
package結果展示:cn.itcast.cases2;
import
j**a.util.arraylist;
import
j**a.util.collections;
import
j**a.util.hashmap;
import
j**a.util.list;
public
class
doudizhu
}//2.洗牌
collections.shuffle(pokerindex);
//3.發牌
//定義4個集合,儲存玩家牌和庭牌的索引
arraylistplayer1=new arraylist<>();
arraylist
player2=new arraylist<>();
arraylist
player3=new arraylist<>();
arraylist
tingpai=new arraylist<>();
//用取餘法發牌
for (int i = 0; i < pokerindex.size(); i++)
else
if(i%3==0)
else
if(i%3==1)
else
}//4.排序,sort方法預設為公升序排序
collections.sort(player1);
collections.sort(player2);
collections.sort(player3);
collections.sort(tingpai);
//5.看牌
//呼叫看牌的方法:
lookpoker("雙雙",poker,player1);
lookpoker("盛杭",poker,player2);
lookpoker("阿竹",poker,player3);
lookpoker("庭牌",poker,tingpai);
}//定義乙個看牌的方法,提高**的復用性
//方法的引數為name:看牌者的名字,poker:撲克牌,list:牌的索引的集合
public
static
void lookpoker(string name,hashmappoker,arraylistlist)
//輸出所有值後換行
system.out.println();}}
集合案例 鬥地主
1.準備牌 54張牌,儲存到乙個集合中 特殊牌 大王,小王其他52張牌 定義乙個陣列 集合,儲存4種花色 黑 紅 梅 方 定義乙個陣列 集合,儲存13個序號 2,a k q 4 3 迴圈巢狀遍歷兩個陣列 集合組裝52張牌 2.洗牌 使用集合工具類collections的方法 static void ...
鬥地主案例(雙列集合)
案例介紹 按照鬥地主的規則,完成洗牌發牌的動作。具體規則 組裝54張撲克牌將 54張牌順序打亂 三個玩家參與遊戲,三人交替摸牌,每人17張牌,最後三張留作底牌。檢視三人各自手中的牌 按照牌的大小排序 底牌 規則 手中撲克牌從大到小的擺放順序 大王,小王,2,a,k,q,j,10,9,8,7,6,5,...
用集合實現鬥地主案例
public class dealcards string str2 存放所有牌的集合 arraylist list newarraylist 存放玩家一的手牌 arraylist list1 newarraylist 存放玩家二的手牌 arraylist list2 newarraylist 存放...