您的位置 首页 java

Java入门教程-扑克发牌实现

1. 集合框架工具类和方法

1.1. Arrays(掌握)

Arrays类是数据的工具类,其中有一个方法比较常用。

  • public static <T> List<T> asList(T… a):该方法可以把一个Object数组转换为List集合。

注意通过Arrays.asList方法得到的List对象的长度是固定的,不能增,也不能减。

1.2. Collections(了解)

Collections是集合的工具类,封装了Set、List、Map操作的工具方法,比如拷贝、排序、搜索、比较大小等。

1.3. 斗地主发牌案例(了解)

按照斗地主游戏的规则,模拟对54张扑克牌的洗牌和发牌以及对手中牌排序操作。

具体规则:

  1. 将54张不同花色的扑克牌打乱(♠♣♥♦☻)
  2. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌
  3. 查看三人各自手中的牌(按照牌的大小排序)、底牌
  4. 手中扑克牌从大到小的摆放顺序:大王、小王、2、A、K、Q、J、10、9、8、7、6、5、4、3

该案例能够非常好的通过集合的操作来完成,对集合的操作也是一个很好的练习。

实现:

首先我们定义好基本的代码测试框架:

接下来,使用一个列表来记录四中花色:

然后,想办法添加牌面。牌面有2~A;一共四种花色,所以我们可以使用一个列表,来添加4份2~A的牌面:

牌面最终要和花色对应,为了后面的发牌操作方便,我们定义一个Map<Integer,String>,key是我们定义的排序,可以简单的理解为我们为每一张牌定义了一个编号,value就是具体的排面+花色,相当于每一张牌和一个具体的序号一一对应:

洗牌:

接下来定义三个玩家的牌列表,然后为最后剩下的底牌定义一个列表在存放:

发牌:

每个玩家手牌排序:

注意,到这里为止,每个玩家手上的牌,仍然不是具体的牌,只是每张牌对应的序号,接下来我们就要通过序号找到对应的牌:

看牌:

到此,发牌操作结束。

1.4. 集合框架小结

List、Set、Map选用

一般的在存储元素时候,是否需要给元素起一个名字:

  • 需要:此时使用Map。
  • 不需:存储的元素使用需要保证先后添加的顺序
  • 需要:此时使用List
  • 不需:此时使用Set(如果需要保证集合元素不重复,也选用Set)

本系列教程为叩丁狼Java基础班内部教材,若要获得最好的学习效果,需要配合对应教学视频一起学习。需要完整教学视频,请私信作者。

文章来源:智云一二三科技

文章标题:Java入门教程-扑克发牌实现

文章地址:https://www.zhihuclub.com/188473.shtml

关于作者: 智云科技

热门文章

网站地图