入门必备小游戏之炸金花

入门必备小游戏之炸金花游戏的规则 一付扑克牌 去掉大小王 每个玩家发 3 张牌 最后比大小 看谁赢

大家好,欢迎来到IT知识分享网。


 游戏的规则:

一付扑克牌,去掉大小王,每个玩家发3张牌,最后比大小,看谁赢。


牌型:

豹子:三张一样的牌,如3张6,分值100

顺金:又称同花顺,即3张同样花色的顺子, 如红桃 5、6、7,分值75

顺子:又称拖拉机,花色不同,但是顺子,如红桃5、方片6、黑桃7,组成的顺子,分值50

对子:2张牌一样,分值25

单张:单张最大的是A,分值依次为2,3,4,…,12,13,14


程序的功能:

1. 先生成一付完整的扑克牌

2. 给5个玩家随机发牌

3. 统一开牌,比大小,输出赢家是谁 


思路:

用一个list存储所有的牌和其对应的单张牌的分值,效果如下:

入门必备小游戏之炸金花

 用一个list存储五个玩家,效果如下:

入门必备小游戏之炸金花

  用一个dict存储每个玩家的姓名和拿到的牌,效果如下:

入门必备小游戏之炸金花

最后根据每个玩家手中的牌来进行评分,分数最高者即为胜利者,话不多说,源码如下: 

 

# 引入包 import random # 生成一副牌 def generate_puke(): decor = ['黑桃', '红心', '梅花', '方块'] # 花色 number = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] # 数字,J Q K A 分别用11 12 13 14代替 puke = [] for i in decor: for j in number: hua = i if j == 11: num = 'J' elif j == 12: num = 'Q' elif j == 13: num = 'K' elif j == 14: num = 'A' else: num = str(j) # 以列表的形式,第一个是牌的花色和值,第二个是对应的单张牌的大小 puke.append([hua+num, j]) return puke # 炸金花游戏 def fgf(): # 引入一副牌 puke = generate_puke() # 随机给五个玩家发牌 player = ['P1', 'P2', 'P3', 'P4', 'P5'] p_puke = {} # 字典(玩家,一副牌) puke_copy = puke.copy() # 生成一副牌的副本 plate = random.sample(puke_copy, 15) # 拿出十五张牌 for i, j in zip(player, range(len(player))): # 给五个玩家随机发牌 p = plate[j*3:(j+1)*3] p_puke.setdefault(i, p) print('发牌中') # 设置一个积分器 # 基础分等于单张的值 # 牌型 豹子、顺金、顺子、对子 分数分别为 100,75,50,25 integral = [] for i in player: # 获取三张牌 one = p_puke[i][0][1] two = p_puke[i][1][1] three = p_puke[i][2][1] num_set = {one, two, three} color1 = p_puke[i][0][0][:2] color2 = p_puke[i][1][0][:2] color3 = p_puke[i][2][0][:2] base_score = one + two + three if len(num_set) == 1: card_type_score = 100 elif len(num_set) == 3 and max(abs(one-two), abs(one-three), abs(two-three)) == 2 or {2, 3, 14} == num_set: if color1 == color2 == color3: card_type_score = 75 # 顺金 else: card_type_score = 50 # 顺子 elif len(num_set) == 2: card_type_score = 25 else: card_type_score = 0 score = base_score + card_type_score integral.append([i, score]) # 开牌 print(' ······· ') print('开牌中') for i, j in zip(p_puke.items(), integral): print('玩家名: ', i[0]) print('持牌: ', end='') print(i[1][0][0], i[1][1][0], i[1][2][0], sep=' ', end='') print(' 得分: ', j[1]) # 判断胜利者 winner = 'P1' winner_score = integral[0][1] for i in integral: if i[1] > winner_score: winner = i[0] winner_score = i[1] print('结果计算中') print('玩家', winner, '胜利\n他的持牌是:', p_puke[winner][0][0], p_puke[winner][1][0], p_puke[winner][2][0]) print('*本局游戏结束') if __name__ == '__main__': fgf() 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/148024.html

(0)
上一篇 2025-04-03 14:00
下一篇 2025-04-03 14:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信