需求:
使用面向对象完成扑克牌的生成,分别对应3位玩家,每人17张牌,底牌3张。最后再将手牌以点数、花色"♠,♥,♣,♦"降序排列
思路:
涉及到面向对象我们需要创建牌堆作为一个对象,拥有花色、点数俩个属性。
1.生成牌堆
定义花色和点数为一个数组,.split(",")是以逗号分开再放进数组,和一个一个个写"3","4","5"同样的。在上方定义poker集合,双for循环new Card的同时分别把花色和点数赋给集合当中,循环条件长度可以互换,这里效果是:♣2 , ♦A , ♥A ,但注意放入集合时,需要对应放入i 和 j,否则会出现下标越界,由于大小王没有花色,需要单独在添加完其他排后添加
2.洗牌
调用Collections的shuffle();方法,传入集合参数,他会自动打乱集合里的数据,不会产生新的集合,打印洗好牌之后的牌,这里在Card对象里重写了toString方法,只打ians
3.发牌
使用poker.subList(从哪个下标开始截取;结束),遵循前闭后开,0~17,只取0~16,得到每个人的牌,底牌为3张
4.排序
由于有3副牌堆,加上底牌,我们进行排序就需要定义一个方法,传入每个人的手牌集合。在这之前,我们需要考虑用什么来进行排序,因为扑克牌的特殊性,3-10,且2比这些牌都大。我们需要使用到一个下标,所以在Card类中定义了点数的下标和花色的下标,就