我在学习“插入排序法”时,书中将插入排序法与现实生活中整理牌序联系在一起,我就立刻想到了市面上流行的斗地主游戏。
斗地主游戏也是发牌之后进行排序,而且速度很快,我就想,牌有不同花色,从数据类型上说有整型(2~10),有字符型(J,Q,K,A),还有王牌。他们是怎样实现不同类型的数据在放在一起并实现符合游戏规则的排序的。
ps:符合游戏规则的排序,指的是“2”是除了王牌外最大的牌,被放在左手边。花牌(J,Q,K)放在3~10之前,“A”之后。
我尝试着结合插入排序法试图写出符合斗地主游戏规则的排序函数,牌库为[3,4,5,6,7,8,9,10,'J','Q','K']和[2,A],和['大王','小王'],试图先排第一个列表,再用列表相加的方式将后两个列表放在最左边。
但是我用这种思路去写程序困难重重,最后放弃了。
后来我想了一个取巧的办法,用大的数字代替掉难以处理的数据,进行排序之后再逐个还原成符合现实情况的牌面。
代码如下:
import random
"""该程序是基于“插入排序法”扩展的斗地主游戏小程序,其核心是实现市面上斗地主游戏发牌自动排序的功能"""
def shuffle():
"""
此函数用于洗牌,牌库为列表D