# val = [2,2,2]
# if len(set(val)) ==2:
# print("你手中的牌是个对子")
# if len(set(val)) == 1:
# print("你手中的牌是个豹子")
# 1.代码实现
import random
poke_types = ['♥','♣','♠','♦']
poke_nums = [2,3,4,5,6,7,8,9,10,'J','Q','K','A']
poke_list = []
def alex():
for p_type in poke_types:
count = 2
for p_num in poke_nums:
card = [f'{p_type}{p_num}',couut]
poke_list.append(cards)
count += 1
return(poke_list)
pokelist = alex()
# 2.生成发牌
player = ["A","B","C","D","E"]
def blackGirl(pl,pk,pn):
play_dec = {}
for p_name in player:
p_cards = random.sample(pokelist,pn)
for card in p_cards:
pokelist.remove(card)
play_dec[p_name] = p_cards
return play_dec
playsDec = blackGirl(player,pokelist,3)
# print(playsDec)
# 3.写好每种牌型的函数
def shortList(data_list):
lenth = len(data_list)
for i in range(lenth):
for j in range(lenth-i-1):
if data_list[j][i] > data_list[j+1][1]:
data_list[j],data_list[j+1] = data_list[j+1],data_list[j]
return data_list
#单子
def calculate_singer(p_cards,score):
count = 0
p_cards = shortList(p_cards)
print(p_cards)
weight_card = [0.01,1,10]
for card in p_cards:
score += card[1]*weight_card[count]
count += 1
print(f"单子计算的结果是{score}")
return score
#对子
def calculate_pair(p_cards,score):
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[0]
print(f"对子计算的结果是{score}")
return score
#顺子
def calculate_shongzi(p_cards,score):
p_cards = shortList(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 calculate_tonghua(p_cards, score):
card_val = [i[0][0] for i in p_cards]
if len(set(card_val))==1:
score *= 1000
print(f"同花计算的结果是{score}")
return score
# 同花顺
def calculate_tonghuashong(p_cards, score):
card_val = [i[0][0] for i in p_cards]
if len(set(card_val)) == 1:
p_cards = shortList(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 *= 10000
print(f"同顺子计算的结果是{score}")
return score
#豹子
def calculate_baozi(p_cards, score):
card_val = [i[1] for i in p_cards]
if len(set(card_val)) == 1:
score *= 100000
print(f"豹子计算的结果是{score}")
return score
# 4.比对
calc_func_ordefs = [
calculate_singer,
calculate_pair,
calculate_shongzi,
calculate_tonghua,
calculate_tonghuashong,
calculate_baozi,
]
play_score = []
for p_name,p_cards in playsDec.items():
print(f"开始计算玩家{p_name}的牌{p_cards}")
score = 0
for cal_func in calc_func_ordefs:
score=cal_func(p_cards,score)
play_score.append([p_name,score])
winner = shortList(play_score)[-1]
print(f"最后计算玩家{winner[0]}的分数{winner[1]}")
五个人一副牌,比大小,看谁的点数大
最新推荐文章于 2025-12-05 17:02:52 发布
3万+

被折叠的 条评论
为什么被折叠?



