python3-欢乐斗牛-实战

题目:欢乐斗牛是由多人进行,一个庄家,其他闲家。 每人发5张牌,拿出任意3张如果能够刚刚拼凑出10的倍数来,则算是有牛,剩下的2张牌,加起来对10求个位数,如果是0则为牛牛,其他是几则为牛几。 下注有5 8 10 12 15倍进行选择,由玩家自己选择。 牛7 8 9是需要收取双倍的钱,牛牛是需要收取3倍的钱。(没有实现部分:五小牛-5张牌加起来刚刚等于10,倍数为5;五花牛,5张牌都是JQK组成,10不算,倍数为5;炸弹-4张一样的牌,倍数4。后续会实现的)

#coding utf-8

import random
"""
card代表52张扑克牌,在斗牛里面的值为1-10
"""
card = [{"A":1},{"2":2},{"3":3},{"4":4},{"5":5},{"6":6},{"7":7},{"8":8},{"9":9},
    {"10":10},{"J":10},{"Q":10},{"K":10}]*4 

bull_level = [100,500,1500]#初级场,中级场,高级场的基础分

print("欢迎来到欢乐斗牛")
random.shuffle(card)
#假设有10个用户
USER = 10
user_list = []
for i in range(USER):
    user_list.append(card[0+5*i:5+5*i])
    # choice = int(input("请玩家",i,"选择倍数"))
# print(user_list)


def get_valuse(lst):
    keys = []
    values = []
    for x in lst:
        for k,v in x.items():
            keys.append(k)
            values.append(v)
    return keys,values

def judge_bull(values):
    for i in range(5):
        for j in range(5):
            if i != j:
                for k in range(5):
                    if j != k and i != k:
                        if (values[i]+values[j]+values[k]) % 10 ==0:
                            return i,j,k


def which_bull(t,lst):
    keys,values = get_valuse(lst)
    s = 0

    if t is not None:
        for m in range(5):
            if m not in t:
                s += values[m]
        # print("您的牌是",keys,end="  ")
        if s%10 ==0:
            return 10
        else:
            return s%10
    else:
        # print("您的牌是",keys,end="  ")
        # print("没牛")
        return 0

def get_all_bull_result(user_list):
    all_bull_result = []
    for x in user_list:
        all_bull_result.append(which_bull(judge_bull(get_valuse(x)[1]),x))
    return all_bull_result
def print_all_result(choice_list):
    all_bull_result = get_all_bull_result(user_list)
    banker = all_bull_result[0]
    banker_key = get_valuse(user_list[0])[0]
    if banker ==10:
        base = 3
    elif banker>6:
        base = 2
    else:
        base = 1
    if banker_key != 0:
        print("庄家的牌是",banker_key," 牛",banker)
    else:
        print("庄家的牌是",banker_key,"没牛")
    for i in range(1,len(all_bull_result)):
        keys = get_valuse(user_list[i])[0]
        if all_bull_result[i] > banker:
            print("玩家",i,"的牌是",keys,end="  ")
            print("牛",all_bull_result[i],end="  ")
            if 6<all_bull_result[i]<10:
                print("您赢了庄家",bull_level[0]*choice_list[i-1]*2)
            elif all_bull_result[i]==10:
                print("您赢了庄家",bull_level[0]*choice_list[i-1]*3)
            else:
                print("您赢了庄家",bull_level[0]*choice_list[i-1])
        elif all_bull_result[i] == 0:
            print("玩家",i,"的牌是",keys,end="  ")
            print("没牛",end="  ")
            print("您输给了庄家",bull_level[0]*choice_list[i-1]*base)
        else:
            print("玩家",i,"的牌是",keys,end="  ")
            print("牛",all_bull_result[i],end="  ")
            print("您输给了庄家",bull_level[0]*choice_list[i-1]*base)
    # which_milk(judge_milk(get_valuse(a)[1]))
choice_list = [5,5,8,8,10,10,12,12,15]
print_all_result(choice_list)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值