1 17 專案例項 模仿鬥地主洗牌發牌小遊戲

2021-10-09 08:51:52 字數 4320 閱讀 3646

實現思路步驟如下:

準備牌:arrylist 集合儲存,for 迴圈遍歷實現

洗牌:使用 collections 的shuffle(arrybox);方法重新整理集合中的順序

發牌:使用 for 迴圈遍歷 arrylist 中的 51 張牌,然後用索引值對 3 取餘,餘數為 0,1,2 然後來隨機分配牌。

看牌:直接輸出集合

public

class

main

; string[

] arr2 =

; list

arrybox =

newarraylist

<

>()

;for

(int i =

0; i < arr1.length; i++)}

arrybox.

add(

"大王");

arrybox.

add(

"小王");

// 3個人鬥地主,分別為 zhangsan、lisi、wangwu

list

zhangsan =

newarraylist

<

>()

; list

lisi =

newarraylist

<

>()

; list

wangwu =

newarraylist

<

>()

;// 2. 洗牌

collections.

shuffle

(arrybox)

;// 3. 發牌

for(

int i =

0; i < arrybox.

size()

-3; i++

)else

if(i %3==

1)else

if(i %3==

2)}// 4. 看牌

pushboss()

; system.out.

println

("張三:"

+ zhangsan)

; system.out.

println

("李四:"

+ lisi)

; system.out.

println

("王五:"

+ wangwu)

; system.out.

print

("底牌:[");

for(

int i =

1; i <

4; i++)}

system.out.

print

("]");

}/** 隨機地主 */

public

static

void

pushboss()

}

執行上面程式,輸出結果為:

此局地主是:李四

張三: [梅花10

, 方片2

, 方片k, 方片j, 方片5

, 黑桃6

, 黑桃10

, 紅桃3

, 梅花3

, 黑桃2

, 梅花8

, 黑桃a, 紅桃j, 梅花9

, 紅桃k, 方片9

, 梅花q]

李四: [紅桃4

, 黑桃8

, 方片8

, 方片3

, 紅桃2

, 紅桃6

, 紅桃5

, 黑桃3

, 黑桃4

, 梅花7

, 方片q, 小王, 紅桃8

, 黑桃k, 方片6

, 梅花a, 黑桃7

]王五: [方片4

, 梅花4

, 方片7

, 黑桃5

, 黑桃9

, 紅桃10

, 梅花k, 方片a, 紅桃q, 黑桃j, 梅花2

, 大王, 方片10

, 紅桃a, 梅花j, 梅花5

, 紅桃7

]底牌:[梅花6

,紅桃9

,黑桃q]

可通過 map 集合將三名玩家的牌按大小排序,實現**如下:

public

class

main2

; string[

] arr2 =

;// 定義map集合用來存放索引和牌

hashmap

pokermap =

newhashmap

<

>()

;// 定義list集合儲存索引(索引為0-53)

list

indexlist =

newarraylist

<

>()

;// 定義索引值變數

int index =0;

// 將撲克牌與索引建立對應關係放入map和list集合中

for(string num : arr2)

} pokermap.

put(index,

"小王");

indexlist.

add(index++);

pokermap.

put(index,

"大王");

indexlist.

add(index)

;// 定義玩家

treeset

zhangsan =

newtreeset

<

>()

; treeset

lisi =

newtreeset

<

>()

; treeset

wangwu =

newtreeset

<

>()

; treeset

buttoms =

newtreeset

<

>()

;// 2. 洗牌

collections.

shuffle

(indexlist)

;// 3. 發牌

for(

int i =

0; i < indexlist.

size()

; i++

)else

if(i %3==

0)else

if(i %3==

1)else

}// 4. 看牌

pushboss()

;check

(pokermap, zhangsan,

"張三");

check

(pokermap, lisi,

"李四");

check

(pokermap, wangwu,

"王五");

check

(pokermap, buttoms,

"底牌");

}/**

* 看牌

** @param pokermap

* @param player 玩家撲克牌對應索引集合

* @param name 玩家暱稱

*/public

static

void

check

(hashmap

pokermap, treeset

player, string name)

system.out.

println

("]");

}/** 隨機地主 */

public

static

void

pushboss()

}

執行上面程式,輸出結果為:

此局地主是:張三

張三:[方片a 紅桃2 方片2 黑桃4 紅桃4 梅花4 紅桃6 方片6 梅花6 黑桃7 紅桃8 黑桃9 黑桃10 方片j 方片q 黑桃k 紅桃k ]

李四:[梅花2 黑桃3 紅桃3 方片3 梅花3 紅桃5 方片5 紅桃7 梅花8 紅桃9 梅花9 紅桃10 梅花10 黑桃q 梅花q 梅花k 小王 ]

王五:[黑桃a 紅桃a 黑桃2 方片4 黑桃5 黑桃6 方片7 黑桃8 方片8 方片9 方片10 黑桃j 紅桃j 梅花j 紅桃q 方片k 大王 ]

底牌:[梅花a 梅花5 梅花7

]

Jmeter公司專案例項(一) 專案介紹

公司的乙個活動,活動結束後可以使用積分兌換實物禮品,需要測試大量使用者同時兌換時獎品的發放情況,獎品僅10份,可能會出現幾百人同時兌換獎品的情況。1 獲取角色資訊url testapi.x.com account members by me method post 請求引數 access token...

openlayers 學習筆記(五)專案例項

開始用geoserver openlayers 做乙個例項專案。需要說明的是由於本人是規劃部門的資訊化從業者,所以例項是規劃管理方面的。1 專案名稱 用地許可地圖發布工具 2 簡單描述 將用地許可基本資訊與示意位置在定位圖上發布出來,並提供查詢功能。以下開始明確有關細節內容。3 許可基本資訊包括名稱...

Vuex 的專案例項1 專案初始化

npm install vuex axios ant design vue s 當然也可以使用視覺化面板的依賴安裝。ant design vue 是ui元件庫。main.js 檔案 1.匯入 ant destign vue 元件庫 import antd from ant design vue 2....