五个人一副牌,比大小,看谁的点数大

# 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]}")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青龙摄影

你的鼓励是我创作的动力,支持下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值