import random
# 创建牌面
def createPk():
colors = ["♠", "♥", "♦", "♣"]
pks = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"]
pk_list = []
card = []
for color in colors:
count = 2
for pk in pks:
pm = color + pk
pk_list.append([pm, count])
card.append(pm)
count += 1
print("*" * 25 + "已经洗牌完成" + "*" * 25)
print(card)
return pk_list
players = []
def fp(pk_list, players, num):
print("*" * 25 + "生成玩家" + "*" * 25)
for i in range(num):
player = input(f"请输入玩家{i + 1}的姓名:")
players.append(player)
play_dic = {}
for name in players:
pm = random.sample(pk_list, 3)
cards = []
for card in pm:
pk_list.remove(card)
cards.append(card[0])
play_dic[name] = pm
print(f"为玩家{name}生成牌面:{cards}")
# print(play_dic)
return play_dic
def sort_list(datalist):
# 冒泡法
length = len(datalist)
for i in range(length):
# swapped = False
for j in range(length - i - 1):
if datalist[j][1] > datalist[j + 1][1]:
datalist[j], datalist[j + 1] = datalist[j + 1], datalist[j]
# swapped = True
# if not swapped:
# break
return datalist
def pd_danzhang(p_cards, score):
p_cards = sort_list(p_cards)
level = [0.1, 1, 10]
count = 0
for card in p_cards:
# print(card)
score += card[1] * level[count]
count += 1
print(f"计算单牌的得分是:{score}")
return score
def pd_duizi(p_cards, score):
p_cards = sort_list(p_cards)
card_val = [i[1] for i in p_cards]
if len(set(card_val)) == 2:
if card_val[0] == card_val[1]:
score = (card_val[0] + card_val[1]) * 50 + card_val[2]
else:
score = (card_val[2] + card_val[1]) * 50 + card_val[1]
print(f"计算对子的得分是:{score}")
return score
def pd_shunzi(p_cards, score):
p_cards = sort_list(p_cards)
card_val = [i[1] for i in p_cards]
a, b, c = card_val
if b - a == 1 and c - b == 1:
score *= 100
print(f"计算顺子的得分是:{score}")
return score
def pd_tonghua(p_cards, score):
p_cards = sort_list(p_cards)
color_val = {i[0][0] for i in p_cards}
if len(color_val) == 1:
score *= 1000
print(f"计算同花的得分是:{score}")
return score
def pd_tonghuashun(p_cards, score):
card_val = [i[1] for i in p_cards]
a, b, c = card_val
color_val = {i[0][0] for i in p_cards}
if len(color_val) == 1:
if b - a == 1 and c - b == 1:
score *= 0.1
print(f"计算同花顺的得分是:{score}")
return score
def pd_baozi(p_cards, score):
card_val = {i[1] for i in p_cards}
if len(card_val) == 1:
score *= 100000
print(f"计算豹子的得分是:{score}")
return score
pd_jihe = [
pd_danzhang,
pd_duizi,
pd_shunzi,
pd_tonghua,
pd_tonghuashun,
pd_baozi
]
pk_list = createPk()
num = int(input("请输入参加游戏人数:").strip())
score = 0
play_dic = {}
play_dic = fp(pk_list, players, num)
playscores = []
for name, p_cards in play_dic.items():
print("*" * 25 + f"计算{name}玩家结果:" + "*" * 25)
score = 0
for pd_val in pd_jihe:
score = pd_val(p_cards, score)
playscores.append([name, score, p_cards])
winner = sort_list(playscores)[-1]
print(f"最后获得胜利的是{winner[0]},得分是{winner[1]},牌型是{[i[0] for i in winner[2]]}!")
python扎金花
最新推荐文章于 2024-08-25 08:00:00 发布