利用List Set實現鬥地主發牌功能

2021-09-11 22:42:07 字數 2093 閱讀 6514

一開始利用了arraylist的直接組建一副撲克牌並利用collections.shuffle()打亂牌序,

但是發現看牌時牌序太亂,不方便檢視

於是利用了treeset自帶的排序功能,撲克牌大小利用hashmap的鍵值對一一儲存進去,最後通過索引值取出牌組。

//優化前的**如下:

public static void main(string args) ;

string hs = ;

arraylistpoker = new arraylist();

for (string s1 : hs)

} poker.add("小王");

poker.add("大王");

//2、洗牌

collections.shuffle(poker);

//3、發牌

arraylistmht = new arraylist(); //玩家馬化騰

arraylistmy = new arraylist(); //玩家馬雲

arraylistme = new arraylist(); //我

arraylistdp = new arraylist(); //底牌

for(int i = 0; i < poker.size() ; i++)

if(i % 3 ==0)

if(i % 3 == 1)

if(i % 3 == 2) }

//4、顯示大家的手牌與底牌

system.out.println("本輪的底牌是:"+dp);

system.out.println("馬化騰的手牌是:"+mht);

system.out.println("馬雲的手牌是:"+my);

system.out.println("我的手牌是:"+me);

//使用treeset和hashmap優化後

public static void main(string args) ;

string color = ;

hashmappoker = new hashmap(); //儲存索引和撲克牌

arraylistlist = new arraylist(); //儲存索引

int index = 0 ; //記錄索引值

for (string s1 : num)

} poker.put(index, "小王");

list.add(index);

index ++;

poker.put(index, "大王");

list.add(index);

//2、洗牌

collections.shuffle(list);

//3、發牌

treesetmht = new treeset<>(); //玩家馬化騰

treesetmy = new treeset<>(); //玩家馬雲

treesetme = new treeset<>(); //我

treesetdp = new treeset<>(); //底牌

for(int i = 0; i < list.size() ; i++)

if(i % 3 ==0)

if(i % 3 == 1)

if(i % 3 == 2) }

lookpai(poker, dp, "底牌");

lookpai(poker, mht, "馬化騰");

lookpai(poker, my, "馬雲");

lookpai(poker, me, "我");

}//4、顯示大家的手牌與底牌

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

3.2 案例需求分析 準備牌 完成數字與紙牌的對映關係 使用雙列map hashmap 集合,完成乙個數字與字串紙牌的對應關係 相當於乙個字典 洗牌 通過數字完成洗牌發牌 發牌 將每個人以及底牌設計為arraylist,將最後3張牌直接存放於底牌,剩餘牌通過對3取模依次發牌。存放的過程中要求數字大小...

實現模擬鬥地主

實現模擬鬥地主的功能 1.組合牌 2.洗牌 3.發牌 4.看牌 public class doudizhu 定義4個花色陣列 string colors 定義整數變數 作為鍵出現 int index 2 遍歷陣列 花色 點數的組合,儲存到map集合 for string number numbers...

鬥地主AI演算法實現

鬥地主ai演算法實現 一 拆牌 by wojiushi3344 棋牌遊戲開發專欄 首先我們來看一下ai的定義 人工智慧 artificial intelligence 簡稱ai。它是研究 開發用於模擬 延伸和擴充套件人的智慧型的理論 方法 技術及應用系統的一門新的技術科學。人工智慧研究如何用計算機去...