①项目分析

②代码实现:
1、定义玩家类 Player

2、定义牌类 Joker
注:由于父类Object中的toString方法打印出来的效果过于臃肿,所以我重写了toString方法

3、定义主类 DouDiZhu

1、定义产生54张牌集合的方法AllJokers(有返回值),按照strNum的大小降序排列。大王小王两张先定义,再添加到牌集合AllJokers中,"2","A","K","Q","J","10","9","8","7","6","5","4","3"的四色牌总共52张,用嵌套循环添加到牌集合AllJokers里,外层控制点数大小,内层控制花色。最后再return 整个牌集合。
2、定义分牌方法playJokers(有返回值),因为分到玩家手中的牌,需要从大到小排序,所以分出来的牌要用Set集合中的TreeSet排序,故playJokers这个方法需要用Set<>修饰,传参:哪个集合、从哪里开始截取,到哪里结束。
3、调用产生54张牌集合的方法AllJokers方法,产生54张牌。(这时54张牌是按顺序排列的)
4、调用Collections类中的shuffle方法打乱54张牌的顺序
5、定义3个玩家,给3个玩家分牌
分牌:调用分牌方法playJokers方法,第一个玩家分第1到17张牌,第二个玩家分第18到34张牌,第三个玩家分第35到51张牌。最后52-54的3张牌为底牌。
6、打印3个玩家的姓名+分到的牌,打印底牌
③最后效果为

网友评论