实现扑克的洗牌和发牌
分析:
初始化一副扑克牌数据,要实现洗牌的话,需要打乱扑克牌的顺序,所以不太适合用数组,因此
这里使用集合List来存放扑克牌数据,创建ArrayList对象将扑克放进去。
使用Collections的shuffle方法对集合进行洗牌
实现发牌,以发三家牌为例
实现:
上面的代码中没有对看牌的打印结果进行排序,这样看上去有些乱,用户体验不好。下面再完善一下这个功能,将打印出的看牌结果进行排序。
分析:要想实现排序,需要找到排序的规则,扑克牌中的点数对于计算机来说不太方便进行排序,因此我们自己定义一个int类型的变量作为排序索引,然后将该索引的值与扑克的点数做映射,这样只要根据该索引进行排序就可以了。
正好在java中的map有这种key-value对应的功能,所以这里使用map来解决这个问题,将扑克牌的点数放到Map的value中,将索引放到key中。
需要使用list中的shuffle方法来进行洗牌操作,上面已经将索引和扑克牌的点数做了映射了,因此只需要将索引即map的key放到List中存放一份。使用shuffle方法对List进行清洗,之后将清洗后的list中的数据分别均等的存放到三个TreeSet中,这样TreeSet中的数据是排好序的,将这些数据作为key去map查找相应的value,打印即可。
实现:
继续重构上面的代码,将扑克牌的初始化操作和发牌操作抽取出方法,将初始化操作内容抽取到一个类中,内容如下:
然后抽取发牌的方法: