本文主要介绍了基于Python制作一副扑克牌的详细过程。通过示例代码进行了非常详细的介绍,对大家的学习或工作有一定的参考价值。有需要的朋友可以参考一下。
整理出来,通过这篇文章分享给大家。本案例是通过Python类属性创建一张52张扑克牌去掉王和王后的图片,实现随机抽牌、排序、洗牌等功能;
创建一个卡片类。
一副扑克可以分为四组,每组13张牌,以花色为基础(梅花、方块、黑桃、红心),王、王除外。因此,可以创建两个列表,一个存储花色,另一个存储13个字符。通过两个列表之间的随机组合产生52张卡片,
代码如下:
代码中由collections.namedtuple模块创建一个类来表示一张牌,['rank ',' suit']分别表示牌中的字符(2-10,J-A)和花色;
FranchDeck类用于构建52张卡片。有两个特殊的方法,len()返回卡片的数量,__getitem__()获取position (index)下指定的卡片。
随机抽一张牌
这里用随机模块实现随机抽卡的功能。
迭代、切片
因为__getitem__方法把[]操作交给了自我。_cards list,除了上面提到的索引定位,FranckDeck()类还可以实现切片和迭代操作;
分类操作
一般来说,根据点数判断扑克牌大小时,2最小,A最大。点的排序相对简单。创建点列表时,会按上述顺序创建。排序时,只需要按照点所在的索引进行排序即可。
除了点数,还有一个颜色需要考虑。对于颜色,需要建立一个映射基准(也叫权重),不同的颜色赋予不同的值;Python的字典类型可以在很多方面满足我们的需求。
代码解释:
1.通过使用字典在代码中添加映射机制,黑桃是3,红桃是2,方块是第二,梅花是下一个;2.创建黑桃_高函数,计算每张牌的总重量;3.sorted()功能键=黑桃_高作为排序基准对扑克牌进行排序。
洗牌操作
洗牌就是随机地重新排列一副扑克牌;一般情况下,random.shuffle可以通过多种方式实现这个功能,但前提是要保证对象符合变量协议。这里不满足FranchDeck(),如果直接使用会报错:
对于上面的问题,只需要将这个类由不变量改为变量,并创建一个函数将其赋为__setitem__属性即可。
这里已经提取了洗牌前后牌的前五行,实现了洗牌的功能!
根据上面的代码部分,我们可以进一步提前开发设计54张扑克牌的视觉图片。
创建一个key:value映射关系,在扑克牌人物和视觉图片之间创建一个映射关系,如下图所示,并将这个关系集存储在指定的数据库或文件中,使用后可以直接调用。
按照上面的高级玩法,创建一个基于Python的扑克牌小程序!
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。