Python编写斗地主游戏(单机版) | 您所在的位置:网站首页 › 有编辑器的手机游戏叫什么 › Python编写斗地主游戏(单机版) |
斗地主玩法介绍:
斗地主是三个人玩,两个人斗一个地主,地主20张牌。农民每人17张牌。 王炸:大王+小王 是最大牌,可以炸别人任意的牌,单张的话 大王比小王大,两者都可以代替任意牌型。 第二大是炸弹:从2点A点K以此推类到3点炸,四只牌一起就是炸弹,可以炸对方的连牌,单牌,对子,三代一 飞机就是说要有三个三跟三个四,或三个十跟三个J三张两个连在一起才叫飞机,飞机带翅膀就是飞机在带上两只单牌就叫飞机带翅膀。 三带一就是说三张一样的牌,可以带上一只单独的牌就叫三带一 四带二:四张相同的牌带两张不同或相同的牌。 连对的组合就是三个三对牌连在一起的就叫连对,比如556677,88991010,QQKKAA这样就叫连对。 顺子是由五张单独组成的牌叫顺子,最低五张牌,最高可以从3-A。 出牌可以出单或双,单牌的大小排列是大王-小王-2-A-K-Q-J-10-9-8-7-6-5-4-3的顺序。
要实现Python编写,得依次实现以下功能: 生成一副牌、洗牌、发牌、对牌排序、叫地主、出牌合理性判断、出牌大小比较 等等功能。 下图为大致流程: 估计还可以简化一下 def poker_sort(a):#对牌排序函数 a1,a2 = [],[] for i in range(len(a)):#将数字型和非数字型牌挑出来 str_list = list(a[i]) if len(str_list) == 2 or str_list[-1] in ['J','Q','K','A']:#挑出非数字型牌 a2.append(a[i]) else: a1.append(a[i]) #print(a1) #print(a2) i = 0 while 1:# 先对数字型牌使用冒泡排序法 for j in range(len(a1)-1-i): str_list = list(a1[j]) str_list1 = list(a1[j+1]) if len(str_list) == 4:# 牌值为10的转换成列表长度为4 str_list[2] = '10' if len(str_list1) == 4: str_list1[2] = '10' if int(str_list[2]) > int(str_list1[2]): t =a1[j+1] a1[j+1] = a1[j] a1[j] = t i += 1 if len(a1)-1-i == 1: break #print(a1) i = 0 while 1:# 对非数字型牌使用冒泡排序法 for j in range(len(a2)-1-i): str_list = list(a2[j]) str_list1 = list(a2[j+1]) if str_list[-1] == 'J': str_list[-1] = '11' elif str_list[-1] == 'Q': str_list[-1] = '12' elif str_list[-1] == 'K': str_list[-1] = '13' else: str_list[-1] = '14' if str_list1[-1] == 'J': str_list1[-1] = '11' elif str_list1[-1] == 'Q': str_list1[-1] = '12' elif str_list1[-1] == 'K': str_list1[-1] = '13' else: str_list1[-1] = '14' if str_list[0] == '小' : str_list[-1] = '50'#小王用50代替 if str_list1[0] == '小' : str_list1[-1] = '50' if str_list[0] == '大': str_list[-1] = '100'#大王用100代替 if str_list1[0] == '大': str_list1[-1] = '100' if int(str_list[-1]) > int(str_list1[-1]): t =a2[j+1] a2[j+1] = a2[j] a2[j] = t i += 1 if len(a2)-1-i == 1: break #print(a2) a = a1 + a2 #print(a) return a 叫地主 name = input('请输入玩家名:\n')# 游戏角色为一个玩家加两个机器人 print('欢迎玩家'+name+'!') # 叫地主 key = input('请问玩家'+name+'叫地主吗(y/n):\n') if key =='y': player = player + pokers player = poker_sort(player)#对牌排序函数 从2到A、小王、大王 print(name+'现在是地主,牌为:\n',player) else: robot1 = robot1 + pokers robot1 = poker_sort(robot1) print('robot1现在是地主!') 出牌合理性判断即验证牌型 看是单牌、双牌、三带一、飞机、顺子、炸弹、连对等是哪一个 出牌大小比较即对方出了牌 要比较自己有没有比对方大的牌,有就出,没有就过。 未完。。。 |
CopyRight 2018-2019 实验室设备网 版权所有 |