• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

python实战之德州扑克第三步-比较大小

python 搞代码 4年前 (2022-01-09) 33次浏览 已收录 0个评论
文章目录[隐藏]

一、前言

经过前面的两篇文章,整体工作已经完成了2/3了,剩下的1/3,将会在本片文章提及

前面两步文章链接

python实战之德州扑克第一步-发牌

python实战之德州扑克第二步-判断牌型

整体流程:
比较之前须得获取,牌型,牌值,这两部分在上一篇文章已经讲解了,不懂得小伙伴可私信我,乐意解答!
之后就是简单的遍历,通过两两比较,并排好序,就得到含有玩家按顺序从大到小拍好的数组,类似于[0,3,1,2]
然后就是翻译:玩家0>玩家3>玩家1>玩家2
说明:比较大小并排序有许多算法,小编的不是最好的,相信你可以写出更好的算法,节约大量的时间和空间

二、接上一篇的文章

players=deal_cards(2,5)
Values=sort_values(players)
CArdtype=result_card_type(players)
--------------------------------------
'''通过以上三行代码就可以得到牌值和牌型了'''

三、比较大小

知道了牌型牌值,就是进行比较了,加入自己玩的话,肯定是先比较牌型,牌型相同在比较大小,简单来说就是这样,代码实现也是这样

def compare_value(player_fir, play_sec, card_type_fir, card_type_sec): 
    if card_type_fir < card_type_sec:
        return 1 #first<second
    elif card_type_fir > card_type_sec:
        return -1 #first>second
    elif card_type_fir == card_type_sec:  #牌型相等 比较大小
        if card_type_fir in [9, 5, 4, 1, 0]: #高牌、顺子、同花、同花顺、皇家同花顺  直接比大小
            for i in range(5):
                if player_fir[i] > play_sec[i]:
                    return 1
                elif player_fir[i] < play_sec[i]:
                    return -1
        elif card_type_fir in [2, 3, 6]: #四条、葫芦、三条 比较中间的呢个牌值
            if player_fir[2] > play_sec[2]:
                return 1
            elif player_fir[2] < play_<mark>来源gaodaimacom搞#^代%!码网</mark>sec[2]:
                return -1
            else :#相等
                for i in range(5):
                    if player_fir[i] > play_sec[i]:
                        return 1
                    elif player_fir[i] < play_sec[i]:
                        return -1
        elif card_type_fir == 7: #两对
            if player_fir[1] > play_sec[1]:
                return 1
            elif player_fir[1] < play_sec[1]:
                return -1
            else:
                if player_fir[3] > play_sec[3]:
                    return 1
                elif player_fir[3] < play_sec[3]:
                    return -1
                else:
                    for i in range(5):
                        if player_fir[i] > play_sec[i]:
                            return 1
                        elif player_fir[i] < play_sec[i]:
                            return -1
        elif card_type_fir == 8: #一对  先找到对子的位置,比较大小
            d1, d2 = 0, 0
            for i in range(4):
                if player_fir[i] == player_fir[i + 1]:
                    d1 = player_fir[i]
                if play_sec[i] == play_sec[i + 1]:
                    d2 = play_sec[i]
            if d1 > d2:
                return 1
            elif d1 < d2:
                return -1
            elif d1 == d2:
                for i in range(5):
                    if player_fir[i] > play_sec[i]:
                        return 1
                    if player_fir[i] < play_sec[i]:
                        return -1
        return 0

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python实战之德州扑克第三步-比较大小
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址