有趣的Python发牌游戏

2020-10-14 22:26
电脑报 2020年37期
关键词:花色扑克牌列表

Python有着三种不同的模块类型,今天的游戏可以帮你更好地理解这一知识。

第一种是系统库中存放的模块,第二种是第三方模块,最后一种是自定义模块。自定义模块相当于Scratch中的自制积木,为了避免一个主程序的代码过于复杂,会将一些函数或功能单独写在另一个文件中,然后通过主程序调用这些自定义模块,来完成程序。注意自定义的模块保存要以.py的后缀名结尾。

我们用Python做一个发牌游戏来练习自定义模块,一副扑克有54张扑克牌,除去大小王还有52张,系统将52张牌随机发给4个人,并在屏幕上显示每位牌手的牌。

52张不同花色不同数字的牌我们不可能一个一个手动输入存在列表中,我们需要运用一些技巧进行分配:在自定义模块中按照数字分配,梅花0-12,方块13-25,红桃26-38,黑桃39-51的順序存储在pocker列表中(未洗牌之前),发牌时将52张牌分发给4个人,每人分得13张,用13轮循环按照顺序将牌加到四个牌手的列表中。

发牌的动作用函数main()实现,发一张牌的动作可以包含两个部分,第一个是获取花色,第二个是获取数值,分别用get_clolor和get_value自定义模块来实现。

首先我们来完成这两个自定义模块部分,分别是获取花色get_clolor和获取数值get_value模块。

获取花色,获取花色的方法比较简单,在相应的取值范围之间获得相应的花色就可以(图1)。

获取数值,获取扑克牌数值需要我们根据情况分别处理,由于扑克牌存在AJQK几个不是数字的情形,所以在获取数字后我们也要做出一定的转换将0转换成A,将10换成J,将11换成Q,将12换成K,因为4个花色的原因一共需要将16个数字分别对应AJQK,剩余的数字可以通过与13取余(n%13)得到对应的结果(图2)。

成功解决了数字和花色的问题后别忘记以.py后缀保存在文本文件中(get_color.py和get_value.py)。

接下来完善主程序,首先用import导入我们刚刚定义好的自定义模块get_color和get_value,紧接着在主函数中创建一个list列表用来存放52个数字(0-51),利用random内置模块完成对52个数字重新打乱当作洗牌的过程,返回到list列表中,洗牌结束后将列表按照次序分别分配给四个牌手,完成发牌的过程后,每个牌手能够分得13张数字(前13个数字分给牌手1,接下来13个数字分给牌手2……),每个牌手得到分配的数字后根据自定义模块将数字进行对应的转化。最终得出相应不同花色和不同的数值(图3)。

通过发牌游戏我们可以学习到如何创建自定义模块以及模块的使用方法,使用中需要体会这种解决问题的思路,在Scratch中我们同样可以运用到这种思维。如果大家有Python基础还可以增加添加图片功能,根据每位牌手的牌展现出对应的扑克牌图片。

猜你喜欢
花色扑克牌列表
猜猜这是哪张牌?
混乱的扑克牌
这两题很难吗
扩列吧
小鱼笔袋
列表法解分式方程问题探索
列表画树状图各有所长
扑克牌中的数学
最爱猫咪花色TOP5
2011年《小说月刊》转载列表