派森从零到放弃 发表于 2024-1-23 16:39:09


找到一个以前突发奇想写的斗地主的程序,就给大伙发来看看,包含发牌:54张牌分别发三份,玩家出牌,以及控制两个电脑进行出牌(电脑跟托管差不多判断有大就出)
以下是运行程序:首先是随机选取地主,并且电脑出牌,显示玩家的牌,并且玩家进行出牌

                               
登录/注册后可看大图

玩家进行出牌

                               
登录/注册后可看大图


                               
登录/注册后可看大图

最后牌出完判断输赢

                               
登录/注册后可看大图

由于代码时间久远,应该还有一些bug(应该是关于判定出牌的问题)但懒得改了
整体代码放不下了就简单放一个电脑进行出牌判定的代码吧,大概就是判断出牌是啥,判断手牌有啥,打得过就出,其中判断手牌的函数比如单张,对子四带二飞机等等就不一一列出了
  1. # 参数:
  2. # 列表array       玩家的牌
  3. # 列表last_cart   上次出牌  上次出牌默认符合规则
  4. # 作用  判断 AI 本次应该出什么类型的牌
  5. def count(array,last_cart,name):
  6.     # print(last_cart,'666666666666')
  7.     # 顺子和联对 比较特殊  就不按张数算了
  8.     # print(last_cart,'6666')
  9.     temp_list = delete_symbol(last_cart) # 去符号  因为jug_array函数不要符号
  10.    
  11.     # print(temp_list)
  12.     if jug_array(temp_list) == 0:#顺子
  13.         return straight(array,last_cart,name)
  14.     elif Even_for(temp_list) == 0: # 连对
  15.         return paired_count(array,last_cart,name)
  16.     elif judge_airplane(temp_list) == 0:#干捞飞机
  17.         return airplane_0(array,last_cart,name)
  18.     elif judge_airplane(temp_list) == 1:#飞机带单
  19.         return airplane_1(array,last_cart,name)
  20.     elif judge_airplane(temp_list) == 2:#飞机带队
  21.         return airplane_2(array,last_cart,name)

  22.     else:
  23.         if last_cart == []:#全都不要的时候的机器出牌
  24.             return singel_count(array,last_cart,name)
  25.         elif len(last_cart) == 1:# 出单
  26.             return singel_count(array,last_cart,name)
  27.         elif len(last_cart) == 2:# 出对子
  28.             return double_count(array,last_cart,name)
  29.         elif len(last_cart) == 3:# 出三张
  30.             return triple_count(array,last_cart,name)
  31.             

  32.         elif len(last_cart) == 4:
  33.             a = sort_array(last_cart) # 变成数字 按照大小 排列  如:[3,3,3,2]
  34.             if a[0][1:] == a[-1][1:]: # 说明是炸弹
  35.                 return has_boom(array,last_cart,name)
  36.             elif a[0][1:] != a[-1][1:]:# 说明是三代一
  37.                 return three_with_one(array,last_cart,name)

  38.         elif len(last_cart) == 5:
  39.             # a = sort_array(last_cart) # 变成数字 按照大小 排列  如:[3,3,3,2,2]    sort 会吃数组 先不用了
  40.             a = last_cart
  41.             #
  42.             if ((a[2][1:] != a[3][1:]) and (a[0][1:] == a[1][1:])) or ((a[2][1:] != a[3][1:]) and (a[-1][1:] == a[-2][1:])):
  43.                 # 说明是 三代二
  44.                 return three_with_two(array,last_cart,name)
  45.             else:
  46.                 print('你来到了奇怪的地方   ugsiduhoi')

  47.         elif len(last_cart) == 6:
  48.             # a = sort_array(last_cart) # 变成数字 按照大小 排列  如:[3,3,3,2,2]
  49.             a = last_cart
  50.             if (a[2][1:] == a[3][1:]) and ((a[0][1:] != a[1][1:]) or (a[0][1:] != a[-1][1:]) or (a[-1][1:] != a[-2][1:])):
  51.                 # 说明是四代二单   [6,7,8,8,8,8] [6,8,8,8,8,9] [8,8,8,8,9,K]
  52.                 # print('这里是四代二')
  53.                 return four_with_1(array,last_cart,name)
  54.             else:
  55.                 print('不要进来!淦')
  56.                 pass

  57.         elif len(last_cart) == 8:#四代对
  58.             return four_with_2(array,last_cart,name)

  59.         else:
  60.             return -1
复制代码




已有 2 人购买  本主题需向作者支付 10 鱼币 才能浏览 购买主题

中英文泡椒 发表于 2024-1-23 18:08:37

{:5_106:}{:5_106:}

sfqxx 发表于 2024-1-23 19:28:53

{:10_254:}

某一个“天” 发表于 2024-1-28 12:26:03

{:5_109:}

zhangchenyvn 发表于 2024-1-28 17:36:39

厉害

闪光少年 发表于 2024-1-29 10:49:44

感谢大佬的馈赠

哇好帅 发表于 2024-1-29 21:06:37

{:5_106:}

15945179970 发表于 2024-1-29 21:10:00

{:5_102:}

stumblemodel 发表于 2024-1-31 22:01:38

{:10_277:}

学C的h 发表于 2024-2-1 11:19:15

{:5_103:}

laoyoutiao 发表于 2024-3-12 22:12:39

6
页: [1]
查看完整版本: 斗地主