

摘要:斗地主是一種常見的紙牌游戲,但隨著桌面游戲的發展,斗地主做為一款桌面游戲越來越受追捧。本文設計的洗牌發牌方法簡單易用,按照斗地主的游戲規則完成洗牌發牌的整個過程。包括花色與數字組合、編碼,洗牌、發牌,看牌等。
關鍵詞:Java;斗地主;洗牌;發牌
一、功能介紹
斗地主是一款全國各地流行的撲克游戲,由三人玩一副牌,地主為一方,
其余兩家為另一方,雙方對戰,先出完手中牌的一方勝基于JAVA語言,按照斗地主的游戲規則,編寫一個斗地主游戲的洗牌發牌程序, 完成洗牌發牌的過程。眾所周知,一副撲克牌總共有54張牌,版面由不同的花色及數字組合而成,花色有黑桃、紅桃、方塊、梅花4種,數字有2、3、4、5、6、7、8、9、10、J、Q、K、A共13種,4種花色及13種數字共組合成52種,再加上大王、小王,共54張。洗牌的時候先將54張牌打亂,發牌時,共3位玩家參與游戲,每人輪流一次摸一張牌,每人得到17張牌,剩余3張留做底牌。3張底牌為地主一方所有,翻開顯示可查看每個人手中紙牌(按照紙牌的大小順序排序)和底牌。
二、設計與實現
要實現紙牌的洗牌發牌,首先需要完成紙牌的組裝。針對牌面由4種
花色和13種紙牌數字組合而成,分別創建兩個ArrayList集合作為花色集合和數字集合,分別存放4種花色和13種紙牌數字。Color集合存放花色,順序為:黑桃、紅桃、方塊、梅花。Number集合存放數字,順序為:3、4、5、6、7、8、9、10、J、Q、K、A、2(該順序根據斗地主游戲牌的大小規則排序)。
其次,通過foreach語句將花色集合與數字集合進行循環嵌套,組合形成52張牌,并賦予編號。將組合后的牌依次從小到大的順序放到一個HashMap集合中,集合的Key值是編號,Value值是組裝完成的紙牌。順序如下:0-黑桃3、1-紅桃3、2-方塊3、3-梅花3、4-黑桃4……依次循環下去,完成52張牌的組合,最后依次加上小王、大王,完成所有54張牌的編號。這樣就完成了一個數字(Key值)與字符串紙牌(Value值)的對應關系(相當于一個字典)。如圖1圖所示:
再次,使用Collection 類的shuffle()方法打亂數字集合的操作,相當于將紙牌打亂,實現洗牌操作。由于有3個玩家,可以用for循,通過將key值數字與3取余的方法,來區分不同的玩家,將不同紙牌對應的key值數字(編號)分配給3個不同的玩家,實現發牌的功能。如圖2所示:
最后,使用Collection 類的sort()方法對每個玩家手上的牌進行排序,然后循環HashMap集合,根據key值數字查找對應的紙牌并打印,完成顯示每個人手中紙牌和底牌的效果。
三、運行結果分析
運行結果如圖3所示,3個玩家手中分別有17張牌,有3張底牌為地
主牌,且都按從小到大的順序排列顯示,運行結果符合預期設計效果。
參考文獻:
[1]黑馬程序員.Java基礎案例教程.人民郵電出版社.2017(1)
[2]扶松柏、王洋. Java編程從入門到實踐.人民郵電出版社.2020(6)
[3]武春嶺 沈廷杰. 面向對象程序設計 Java版.2020(5)
[4] 譚志國 . Java程序設計實訓(第2版).電子工業出版社.2020(6)
作者簡介:
陳尾英(1984-10),女,福建省南安市人,廣東農工商職業技術學院智能工程學院教師,研究方向:通信技術。