目录
一、扑克牌
1、题目描述
说明:简单起⻅见,我们的扑克只有52张牌(没有⼤⼩王), 游戏需要将52张牌发到4个玩家的⼿上, 每个玩家⼿上有13张牌, 按照⿊桃、红⼼、草花、⽅块的顺序和点数从⼩到⼤排列,暂时不实现其他的功能
2、分析
①首先分清楚要创建的类的个数,此处要创建三个类,一个是扑克类,一个是牌类,一个是玩家类
②扑克类的静态属性有52张扑克牌,方法有洗牌和发牌
③牌类有静态属性花色和大小
④玩家类有静态属性名字,以及方法摸排和排序
3、实现
3、1扑克类
①枚举:枚举类型可以通过继承Enum类来实现,注意Enum类是在enum模块中的
from enum import Enum
class VIP(Enum):
YELLOW = 1
RED = 2
BLUE = 3
如上就创建了一个简单的枚举类型,我们可以查看枚举类型的名称和它的值
其中查看枚举成员可以采用点运算符或者方框运算符,这和普通的类是一模一样的。使用name可以查看枚举的名称,使用value可以查看枚举的值。与普通的类不同的是,我们还可以传入数字来得到枚举成员,所以枚举类型可以用值也可以用数字表示
②初始化:首先通过枚举将牌给声明出来存储到牌的对象中,牌包括花色和大小
②洗牌:也就是将牌类的顺序打乱,此时用到了random的shuffle函数
shuffle() 方法将序列的所有元素随机排序。
random.shuffle (lst )
shuffle()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。
③发牌:将牌发送到玩家手上,从以及初始化好的牌中将牌取出发给玩家,
④判断:因为牌的数量有限,所以要加上一个判断是否有牌发出,此时需用property声明,把一个方法当做属性来用