APP下载

基于JAVA的斗地主小游戏之洗牌发牌设计

2020-09-10陈尾英

看世界·学术下半月 2020年3期

摘要:斗地主是一种常见的纸牌游戏,但随着桌面游戏的发展,斗地主做为一款桌面游戏越来越受追捧。本文设计的洗牌发牌方法简单易用,按照斗地主的游戏规则完成洗牌发牌的整个过程。包括花色与数字组合、编码,洗牌、发牌,看牌等。

关键词: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),女,福建省南安市人,广东农工商职业技术学院智能工程学院教师,研究方向:通信技术。