基于“插入排序法”实现斗地主的发牌及排序功能

本文介绍了如何使用插入排序法来实现斗地主游戏中的发牌和排序功能。作者首先提出问题,即如何处理不同类型的数据(整数、字符和特殊牌)并按规则排序。尝试直接排序遇到困难后,作者采取了一种取巧的方法,通过替换难以处理的数据进行排序,然后恢复成实际的牌面。示例代码展示了最终的排序结果。
摘要由CSDN通过智能技术生成

我在学习“插入排序法”时,书中将插入排序法与现实生活中整理牌序联系在一起,我就立刻想到了市面上流行的斗地主游戏。

斗地主游戏也是发牌之后进行排序,而且速度很快,我就想,牌有不同花色,从数据类型上说有整型(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
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值