python模拟21三人玩法

import random
"""h为桃,f为方块,m为梅花,x为心"""
pop = {"h2":"2","h3":"3","h4":"4","h5":"5","h6":"6","h7":"7","h8":"8","h9":"9","h10":"10","hJ":"10","hQ":"10","hK":"10","hA":"1",
        "x2":"2","x3":"3","x4":"4","x5":"5","x6":"6","x7":"7","x8":"8","x9":"9","x10":"10","xJ":"10","xQ":"10","xK":"10","xA":"1",
        "f2":"2","f3":"3","f4":"4","f5":"5","f6":"6","f7":"7","f8":"8","f9":"9","f10":"10","fJ":"10","fQ":"10","fK":"10","fA":"1",
        "m2":"2","m3":"3","m4":"4","m5":"5","m6":"6","m7":"7","m8":"8","m9":"9","m10":"10","mJ":"10","mQ":"10","mK":"10","mA":"1"}


# 52张牌
def ruffle():
        ioi = []
        for i in pop:
                ioi.append(int(pop[i]))
                # print(pop[i])
                random.shuffle(ioi)  # 打乱列表中的数据
        return ioi
# print(ruffle())

# 随机发两张首牌
def deal():
        pl = random.sample(ruffle(),2)  # 从列表中随机获取两张牌
        return pl
# print(deal())

# 随机发一张牌
def deal1():
        pl = random.sample(ruffle(),1)
        return pl


# 开始游戏
tunn = input("是否开始游戏(y/n):")
if tunn == "n":
        print("已退出游戏")
elif tunn == "y":
        deck = ruffle()    # 一整副牌
        # print(len(deck))
        aa = []
        j = 0
        for i in deal():
                aa.append(i)
                j += int(i)
                deck.remove(i)
        # print(deck)
        print("玩家aa的首牌为:",aa,"共计为",j)
        print(f"还有{len(deck)}张牌")
        bb = []
        k = 0
        for i in deal():
                bb.append(i)
                k += int(i)
                deck.remove(i)
        print("玩家bb的首牌为:",bb,"共计为",k)
        print(f"还有{len(deck)}张牌")
        cc = []
        l = 0
        for i in deal():
                cc.append(i)
                l += int(i)
                deck.remove(i)
        print("玩家cc的首牌为:",cc,"共计为",l)
        print(f"还有{len(deck)}张牌")

        for i in range(len(ruffle())):
                print("现在玩家aa的牌为:", aa)
                tuna = input("玩家aa是否继续拿牌(y/n):")
                if tuna == "n":
                        print("aa玩家放弃拿牌")
                elif tuna == "y":
                        u = deal1()
                        r = 0
                        for i in u:
                                aa.append(i)
                                deck.remove(i)
                        for i in aa:
                                r += int(i)
                        print("现在玩家aa的牌为:", aa,"共计为",r)
                        print(f"还有{len(deck)}张牌")


                print("现在玩家bb的牌为:", bb)
                tunb = input("玩家bb是否继续拿牌(y/n):")
                if tunb == "n":
                        print("bb玩家放弃拿牌")
                elif tunb == "y":
                        u = deal1()
                        r = 0
                        for i in u:
                                bb.append(i)
                                deck.remove(i)
                        for i in bb:
                                r += int(i)
                        print("现在玩家bb的牌为:", bb, "共计为", r)
                        print(f"还有{len(deck)}张牌")


                print("现在玩家cc的牌为:", cc)
                tunc = input("玩家cc是否继续拿牌(y/n):")
                if tunc == "n":
                        print("cc玩家放弃拿牌")
                elif tunc == "y":
                        u = deal1()
                        r = 0
                        for i in u:
                                cc.append(i)
                                deck.remove(i)
                        for i in cc:
                                r += int(i)
                        print("现在玩家cc的牌为:", cc, "共计为", r)
                        print(f"还有{len(deck)}张牌")

                ying = 21  # 判断输赢
                aaa = 0   # 计算点数
                bbb = 0
                ccc = 0
                # 要牌结束计算点数
                if tuna == "n" and tunb == "n" and tunc == "n":
                        for i in aa:
                                aaa += int(i)
                        print("现在玩家aa的牌为:", aa, "共计为", aaa)
                        for i in bb:
                                bbb += int(i)
                        print("现在玩家bb的牌为:", bb, "共计为", bbb)
                        for i in cc:
                                ccc += int(i)
                        print("现在玩家cc的牌为:", cc, "共计为", ccc)

                        minn = []  # 判断最小值
                        # 玩家当前的点数减去21点
                        A_a = aaa - ying
                        if A_a < 0:
                                A_a = -A_a
                        minn.append(A_a)
                        # print(A_a)
                        B_b = bbb - ying
                        if B_b < 0:
                                B_b = -B_b
                        minn.append(B_b)
                        # print(B_b)
                        C_c = ccc - ying
                        if C_c < 0:
                                C_c = -C_c
                        minn.append(C_c)
                        # print(C_c)

                        xiao = min(minn)  # 取最小值
                        # print(type(xiao))

                        if xiao == A_a and xiao == B_b and xiao == C_c:
                                print("平局!,三位玩家共同获胜!")
                                break
                        if xiao == A_a and xiao == B_b:
                                print("玩家aa和玩家bb共赢!")
                                break
                        if xiao == A_a and xiao == C_c:
                                print("玩家aa和玩家cc共赢!")
                                break
                        if xiao == B_b and xiao == C_c:
                                print("玩家bb和玩家cc共赢!")
                                break

                        if xiao == A_a:
                                print("玩家aa获胜")
                                break
                        if xiao == B_b:
                                print("玩家bb获胜")
                                break
                        if xiao == C_c:
                                print("玩家cc获胜")
                                break

                        if int(aaa) - ying == 0 and int(bbb) - ying == 0 and int(ccc) - ying == 0:
                                print("平局!,三位玩家共同获胜!")
                                break
                        if int(aaa) - ying == 0 and int(bbb) - ying == 0:
                                print("玩家aa和玩家bb共赢!")
                                break
                        if int(aaa) - ying == 0 and int(ccc) - ying == 0:
                                print("玩家aa和玩家cc共赢!")
                                break
                        if int(bbb) - ying == 0 and int(ccc) - ying == 0:
                                print("玩家bb和玩家cc共赢!")
                                break

                        if int(aaa) - ying == 0:
                                print(f"玩家aa,赢")
                                break
                        if int(bbb) - ying == 0:
                                print(f"玩家bb,赢")
                                break
                        if int(ccc) - ying == 0:
                                print(f"玩家cc,赢")
                                break
















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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值