Java专题

模拟斗地主之升级版(排序)

2022-09-23  本文已影响0人  exdhlb

斗地主之排序升级版

需求:通过程序实现斗地主中的洗牌、发牌、看牌。要求:对牌进行排序

回忆一下,上篇文章我只是用了ArrayList简单模拟了斗地主的洗牌、发牌、看牌的流程,但是并没有对每个玩家拿到手的手牌进行从大到小排序,所以这篇文章我们升级一下斗地主,让最后每个玩家拿到手中的牌是已经排好序的。

思路:* 1.创建HashMap,键是编号,值是牌

* 2.创建ArrayList,存储编号

* 3.创建花色数组和点数数组

* 4.从0开始往HashMap里面存储编号,并存储对应的牌,同时往ArrayList里面存储编号

* 5.洗牌(洗的是编号),用Collections的shuffle()方法

* 6.发牌(发的也是编号),为了保证编号是排序的,创建TreeSet集合接收

* 7.定义看牌方法(遍历TreeSet集合,获取编号,到HashMap里面找到对应的牌)

* 8.调用看牌的方法


上代码:

* 1.创建HashMap,键是编号,值是牌

* 2.创建ArrayList,存储编号

* 3.创建花色数组和点数数组

注意:既然我们要排序,那点数数组里面的数字大小也要从大到小排序,大小王是最大的且没有花色,所以最后单独添加。


* 4.从0开始往HashMap里面存储编号,并存储对应的牌,同时往ArrayList里面存储编号

* 5.洗牌(洗的是编号),用Collections的shuffle()方法

注意!注意!注意!重要的事情要说三遍!这里有个坑!

在循环花色和点数数组的时候,要把点数数组放在外层循环,这样得到的编号0、1、2、3。。。对应的牌会是♠3/♥3/♣3/♦3...的顺序

假如是把花色数组放在外层循环的话,得到的编号0、1、2、3。。。对应的牌会是♠3/♠4/♠5/♠6...的顺序

很多同学最容易在这里出问题,想的我都是按编号去发牌,为什么我发出来的牌是不是排序的


* 6.发牌(发的也是编号),为了保证编号是排序的,创建TreeSet集合接收


* 7.定义看牌方法(遍历TreeSet集合,获取编号,到HashMap里面找到对应的牌)

* 8.调用看牌的方法


*9.最后一步,结果展示:

模拟斗地主升级完毕!
上一篇 下一篇

猜你喜欢

热点阅读