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

作者:刘sir学代码 时间:2022-01-01 22:27:11 

一、前言

经过前面的两篇文章,整体工作已经完成了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_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

以上代码为比较大小的核心代码

注意:上面这个函数比较的是两个玩家,比较对各玩家就得需要几个循环了,这部分没有绝对的答案,也很简单,上面也有提到,可自行编写!

整体思想就是:
先比较牌型,小则返回-1,大则返回1
牌型相等的话
 这里把高牌、顺子、同花、同花顺、皇家同花顺归为一类
依据就是这几类牌型没有特别之处,只需要比较大小就可,不像对子似的,先比较对子的大小,对子相等在比较五张牌大小
 然后把四条、葫芦、三条归为一类,这三类的一个共同特征是中间的牌,一定有和它的值一样大小的牌
无论是四条、葫芦、三条,不理解的话可以画一下,一眼就可以看出来,这类的思想就是,先比较中间牌值的大小,小返回-1,大返回1,相等则比较五张牌的大小,小则返回-1,大返回1
 两队单独归为一类,这里尼就得感谢室友了,不懂得可看图,附1
 一对也单独归为一类,这类的思想就是先找到对子的位置,比较对子的大小,小则返回-1,大则返回1,相等则比较五张牌的大小,小则返回-1,大则返回1
 有一种特殊的情况,那就是牌型一样,牌值也一样,这种概率,太低了,也是有可能出现的,小编就暂时不考虑把玩家相等的情况写出来了,起始也使用了一个数组存储,只是后面没有翻译

来源:https://blog.csdn.net/liudadaxuexi/article/details/115904995

标签:python,德州扑克,比较大小
0
投稿

猜你喜欢

  • python3字符串操作总结

    2023-08-23 22:31:23
  • asp三天学好ADO对象之第一天

    2008-10-09 12:46:00
  • HTTP状态码

    2009-09-21 12:46:00
  • SQL判断字段列是否存在的方法

    2024-01-22 16:30:26
  • mac下如何将python2.7改为python3

    2023-12-07 17:14:43
  • Python实现对文件进行单词划分并去重排序操作示例

    2023-04-08 02:03:07
  • 解释FCKeditor样式的工作原理

    2007-10-11 13:34:00
  • python通过elixir包操作mysql数据库实例代码

    2024-01-26 04:12:16
  • MySQL 8忘记密码的最佳处理方式浅析

    2024-01-28 17:44:32
  • python搜索包的路径的实现方法

    2021-01-18 01:27:44
  • Python进阶之如何快速将变量插入有序数组

    2021-07-26 16:52:51
  • python中逻辑与或(and、or)和按位与或异或(&、|、^)区别

    2023-07-05 23:02:34
  • python实现库存商品管理系统

    2023-06-01 06:37:29
  • Mysql主键和唯一键的区别点总结

    2024-01-15 10:36:36
  • python爬取m3u8连接的视频

    2023-06-18 13:40:21
  • 关于Python与Golang语言的对比分析

    2023-03-10 18:54:06
  • python函数enumerate,operator和Counter使用技巧实例小结

    2022-08-09 07:02:32
  • python利用tkinter实现图片格式转换的示例

    2023-10-10 05:10:22
  • PyTorch中Tensor的数据统计示例

    2021-03-05 01:04:53
  • 跟老齐学Python之list和str比较

    2021-02-26 22:36:36
  • asp之家 网络编程 m.aspxhome.com