用python编写炸金花游戏程序
顺子:又称拖拉机,花色不同,但是顺子,如红桃5、方片6、黑桃7,组成的顺子。一付扑克牌,去掉大小王,每个玩家发3张牌,最后比大小,看谁赢。顺金:又称同花顺,即3张同样花色的顺子, 如红桃 5、6、7。自己写一个程序,实现发牌、比大小判断输赢。豹子:三张一样的牌,如3张6.统一开牌,比大小,输出赢家是谁。这几种牌的大小顺序为,先生成一付完整的扑克牌。单张:单张最大的是A。
·
用python编写炸金花游戏程序
自己写一个程序,实现发牌、比大小判断输赢。
游戏规则:
一付扑克牌,去掉大小王,每个玩家发3张牌,最后比大小,看谁赢。
有以下几种牌:
豹子:三张一样的牌,如3张6.
顺金:又称同花顺,即3张同样花色的顺子, 如红桃 5、6、7
顺子:又称拖拉机,花色不同,但是顺子,如红桃5、方片6、黑桃7,组成的顺子
对子:2张牌一样
单张:单张最大的是A
这几种牌的大小顺序为, 豹子>顺金>顺子>对子>单张
需程序实现的点:
-
先生成一付完整的扑克牌
-
给5个玩家随机发牌
-
统一开牌,比大小,输出赢家是谁
import random
class ZhaJinHua:
def __init__(self):
self.poke = self.create_poke()
self.card_sore = {'J': 11, 'Q': 12, 'K': 13, 'A': 14, '对子': 20, '顺子': 200, '顺金': 800, '豹子': 10000}
def create_poke(self):
"""创建扑克"""
poke = []
flower_types = ['♣', '♦', '♥', '♠']
card_values = [str(i) for i in range(2, 11)] + ['J', 'Q', 'K', 'A']
for card_value in card_values:
for flower_type in flower_types:
poke.append(flower_type + card_value)
return poke
def distribute_poke(self, poke, player=5):
"""发牌"""
result = []
for i in range(player):
one_group = random.sample(poke, 3)
result.append(one_group)
for item in one_group:
poke.remove(item)
return result
def card_sort(self, cards):
"""排序"""
card_score = []
for card in cards:
if card.isalpha():
card_score.append((card, self.card_sore[card]))
else:
card_score.append((card, int(card)))
res = sorted(card_score, key=lambda x: x[1])
return res
def calculate_score(self, cards):
"""计算分数"""
card_values = [item[1:] for item in cards]
flower_types = [item[0] for item in cards]
card_score_list = self.card_sort(card_values)
if card_score_list[0] == card_score_list[1] == card_score_list[2]:
score = card_score_list[0][1] * self.card_sore['豹子']
elif card_score_list[0] == card_score_list[1] or card_score_list[1] == card_score_list[2]:
score = card_score_list[1][1] * self.card_sore['对子']
elif card_score_list[1][1] - 1 == card_score_list[0][1] and card_score_list[1][1] + 1 == card_score_list[2][1]:
if flower_types[0] == flower_types[1] == flower_types[2]:
score = card_score_list[2][1] * self.card_sore['顺金']
else:
score = card_score_list[2][1] * self.card_sore['顺子']
else:
score = sum(item[1] for item in card_score_list)
return score
def run(self):
result = self.distribute_poke(self.poke)
score_list = []
for i, v in enumerate(result, start=1):
score = self.calculate_score(v)
print(f'玩家{i}', v, score)
score_list.append(score)
player_num = score_list.index(max(score_list)) + 1
print(f"玩家{player_num}获得胜利")
if __name__ == '__main__':
zjh = ZhaJinHua()
zjh.run()
更多推荐
已为社区贡献1条内容
所有评论(0)