小專案 模擬鬥地主發牌

2021-10-09 04:58:21 字數 3701 閱讀 9134

a:鬥地主的功能分析

a:具體規則:

1. 組裝54張撲克牌

2. 將54張牌順序打亂

3. 三個玩家參與遊戲,三人交替摸牌,每人17張牌,最後三張留作底牌。

4. 檢視三人各自手中的牌(按照牌的大小排序)、底牌

b:分析:

1.準備牌:

完成數字與紙牌的對映關係:

使用雙列map(hashmap)集合,完成乙個數字與字串紙牌的對應關係(相當於乙個字典)。

0對大王,1對小王,2對2,3對2.。。。。53對3

數字為鍵,牌為值

為什麼使用數字呢?因為牌本身不好排序麼人數字可以排序。

2.洗牌:

通過數字完成洗牌,將數字是順序打亂

3.發牌:

將每個人以及底牌設計為arraylist,將最後3張牌直接存放於底牌,剩餘牌通過對3取模依次發牌。

存放的過程中要求數字大小與鬥地主規則的大小對應。

將代表不同紙牌的數字分配給不同的玩家與底牌。

4.看牌:

通過map集合找到對應字元展示。

通過查詢紙牌與數字的對應關係,由數字轉成紙牌字串再進行展示。

a:鬥地主的準備牌

/*

* 實現模擬鬥地主的功能

*   1. 組合牌

*   2. 洗牌

*   3. 發牌

*   4. 看牌

*/public class doudizhu ;

//定義4個花色陣列

string colors = ;

//定義整數變數,作為鍵出現

int index = 2;

//遍歷陣列,花色+點數的組合,儲存到map集合

for(string number : numbers)

}//儲存大王,和小王,索引是從0~54,對應大王,小王,...3(牌的順序從大到小)

pooker.put(0, "大王");

pookernumber.add(0);

pooker.put(1, "小王");

pookernumber.add(1);

}

a:鬥地主的洗牌

/** 實現模擬鬥地主的功能

*   1. 組合牌

*   2. 洗牌

*   3. 發牌

*   4. 看牌

*/public class doudizhu ;

//定義4個花色陣列

string colors = ;

//定義整數變數,作為鍵出現

int index = 2;

//遍歷陣列,花色+點數的組合,儲存到map集合

for(string number : numbers)

}//儲存大王,和小王

pooker.put(0, "大王");

pookernumber.add(0);

pooker.put(1, "小王");

pookernumber.add(1);

//洗牌,將牌的編號打亂

collections.shuffle(pookernumber);

}
}
a:鬥地主的發牌

/*

* 實現模擬鬥地主的功能

*   1. 組合牌

*   2. 洗牌

*   3. 發牌

*   4. 看牌

*/public class doudizhu ;

//定義4個花色陣列

string colors = ;

//定義整數變數,作為鍵出現

int index = 2;

//遍歷陣列,花色+點數的組合,儲存到map集合

for(string number : numbers)

}//儲存大王,和小王

pooker.put(0, "大王");

pookernumber.add(0);

pooker.put(1, "小王");

pookernumber.add(1);

//洗牌,將牌的編號打亂

collections.shuffle(pookernumber);

//發牌功能,將牌編號,發給玩家集合,底牌集合

arraylistplayer1 = new arraylist();

arraylistplayer2 = new arraylist();

arraylistplayer3 = new arraylist();

arraylistbottom = new arraylist();

//發牌採用的是集合索引%3

for(int i = 0 ; i < pookernumber.size() ; i++)else if(i % 3 == 0)else if( i % 3 == 1)else if( i % 3 == 2)}}

}

a:鬥地主的看牌

/*

* 實現模擬鬥地主的功能

*   1. 組合牌

*   2. 洗牌

*   3. 發牌

*   4. 看牌

*/public class doudizhu ;

//定義4個花色陣列

string colors = ;

//定義整數變數,作為鍵出現

int index = 2;

//遍歷陣列,花色+點數的組合,儲存到map集合

for(string number : numbers)

}//儲存大王,和小王

pooker.put(0, "大王");

pookernumber.add(0);

pooker.put(1, "小王");

pookernumber.add(1);

//洗牌,將牌的編號打亂

collections.shuffle(pookernumber);

//發牌功能,將牌編號,發給玩家集合,底牌集合

arraylistplayer1 = new arraylist();

arraylistplayer2 = new arraylist();

arraylistplayer3 = new arraylist();

arraylistbottom = new arraylist();

//發牌採用的是集合索引%3

for(int i = 0 ; i < pookernumber.size() ; i++)else if(i % 3 == 0)else if( i % 3 == 1)else if( i % 3 == 2)

}//對玩家手中的編號排序

collections.sort(player1);

collections.sort(player2);

collections.sort(player3);

//看牌,將玩家手中的編號,到map集合中查詢,根據鍵找值

//定義方法實現

look("劉德華",player1,pooker);

look("張曼玉",player2,pooker);

look("林青霞",player3,pooker);

look("底牌",bottom,pooker);

}public static void look(string name,arraylistplayer,hashmappooker)

system.out.println();

}}

鬥地主發牌

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

模擬鬥地主洗牌和發牌

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

Python3模擬鬥地主發牌

模擬鬥地主發牌,牌共54張,花色 黑桃 u2660 梅花 u2663 方塊 u2665 紅桃 u2666 種類為 a2 10jqk,大小王 x,x 三個人,每個人17張牌,牌底留三張 輸入回車,列印第乙個問的17張牌 輸入回車,列印第二個問的17張牌 輸入回車,列印第三個問的17張牌 import ...