python 21点

21点,你可以叫我仁哥,也可以叫我情哥。mua !没请教

21点黑杰克

废话不多说先上代码

代码部分

import random
import time#延时的这里可以用用
huase=['a','b','c','d']#定义花色
#print(str(pukepai[0]))
dianshu=['A','2','3','4','5','6','7','8','9','10','J','Q','K']#定义点数
#定义每个操作的函数
def print3():#可视化
    print()
    print()
    print()
def fapai():#定义一个发牌函数(单个发牌)
    a=str(random.choice(huase))#从花色与点数随机抽出可以保证随机性
    b=str(random.choice(dianshu))#另一方面也保证了牌量为正无穷增强可玩性
    c=a+b
    if b=='A':
        d=int(input("你发到了A,你选择A的大小是?"))
    elif b=='J' or b=='Q' or b=='K':
        d=10
    else:
        d=int(b)
    return [c,d]#返回一个list,[牌,大小]
def fapai1(a,b):#直接一轮
    for i in range(1,len(a)):
        f=fapai()
        a[i].append(f[0])#牌
        daxiao=b[i]#先定义一个变量储存之前的大小
        del b[i:i+1]#list不能直接改变,所有先删除再添加
        b.insert(i,daxiao+f[1])#添加
def suanqian(person,beishu,i,diqian,b):#算钱的
    qian1=person[i][1]
    del person[i][1]
    person[i].insert(1,qian1+beishu[i]*diqian*b)
    qian1=person[0][1]
    del person[0][1]
    person[0].insert(1,qian1-beishu[i]*diqian*b)
print("准备好了吗?游戏开始!")
flag0=1
persons=int(input("游戏有一共多少人参加:"))
qian=int(input("每个人初始钱多少?(如果想要更好的体验该变量越大越好;建议10000):"))
diqian=int(input("赌多大?小赌怡情,大赌伤身。(还有如果想要更好的体验该变量越小越好;建议100)"))
person=[[]]#每个玩家的钱用list表示
beishu=[1]*persons#记录闲家的倍数
person[0].append("庄家")
person[0].append(qian)#person[0]记录庄家
for i in range(1,persons):
    b=["闲家"+str(i),qian]
    person.append(b)
print("每个人的钱数目")
print(person)
##########################################################################################################################################
while flag0==1:
    touxiang=[0]*persons#投降?不存在!
    dianshudaxiao=[0]*persons#记录大小算最后的输赢
    pai=[[]]#记录牌
    pai[0].append("庄家的牌:")
    for i in range(1,persons):#每个闲家的牌
        b=["闲家"+str(i)+"的牌:"]
        pai.append(b)
    print("开始发牌!唰唰唰。。。。")
    fapai1(pai,dianshudaxiao)
    time.sleep(3)
    print(pai)
    print(dianshudaxiao)
    print("再发一轮")
    fapai1(pai,dianshudaxiao)
    time.sleep(3)
    print(pai)
    print("开始发庄家的牌,第一张明牌")
    f=fapai()
    pai[0].append(f[0]+"(明牌)")
    daxiao=dianshudaxiao[0]
    del dianshudaxiao[0:1]
    dianshudaxiao.insert(0,daxiao+f[1])
    time.sleep(3)
    print(pai)
    print("第二张牌暗牌")
    f=fapai()
    pai[0].append(f[0]+"(暗牌)")
    daxiao=dianshudaxiao[0]
    del dianshudaxiao[0:1]
    dianshudaxiao.insert(0,daxiao+f[1])
    time.sleep(3)
    print(pai)
    print("大小(自己不会算!?)",end=" ")
    print(dianshudaxiao)
    for i in range(1,persons):#每个闲家发话
        print3()
        while True:
            bs=1
            print("闲家"+str(i)+"请发话你现在的大小是"+str(dianshudaxiao[i])+",大于17的话就建议不要继续发牌了")
            xuanze=int(input("请选择:1,继续发牌。2,停牌。3,投降。4,加倍。"))
            if xuanze==1:
                f=fapai()
                pai[i].append(f[0])
                daxiao=dianshudaxiao[i]
                del dianshudaxiao[i:i+1]
                dianshudaxiao.insert(i,daxiao+f[1])
                print("现在牌情况")
                print(pai)
                print(dianshudaxiao)
                if dianshudaxiao[i]>21:
                    print("不好意思你爆了!点数大于了21")
                    del dianshudaxiao[i:i+1]
                    dianshudaxiao.insert(i,0)
                    break
            if xuanze==2:
                break
            if xuanze==3:
                beishu[i]=0.5
                suanqian(person,beishu,i,diqian,-1)
                touxiang[i]=1
                break
            if xuanze==4:
                bs1=int(input("加几倍?"))
                beishu[i]=bs*bs1
                break
    print("现在到了庄家阶段")
    while True:
        print3()
        print("庄家"+"请发话你现在的大小是"+str(dianshudaxiao[0])+"大于17的话就建议不要继续发牌了")
        xuanze=int(input("请选择:1,继续发牌。2,停牌。"))
        if xuanze==1:
            f=fapai()
            pai[0].append(f[0])
            daxiao=dianshudaxiao[0]
            del dianshudaxiao[0:0+1]
            dianshudaxiao.insert(0,daxiao+f[1])
            print("现在牌情况")
            print(pai)
            print(dianshudaxiao)
            if dianshudaxiao[0]>21:
                print("不好意思庄家你爆了!点数大于了21")
                del dianshudaxiao[0:0+1]
                dianshudaxiao.insert(0,0)
                break
        if xuanze==2:
            break
        #计算输赢
    print3()
    print("这局结束,庄家与闲家的点数为:",end=' ')
    print(dianshudaxiao)
    for i in range(1,persons):
        if dianshudaxiao[i]>dianshudaxiao[0] and touxiang[i]==0:
            print("闲家"+str(i)+"的点数为"+str(dianshudaxiao)+"大于庄家。闲家"+str(i)+"赢")
            suanqian(person,beishu,i,diqian,1)
        if dianshudaxiao[i]<dianshudaxiao[0] and touxiang[i]==0:
            print("闲家"+str(i)+"的点数为"+str(dianshudaxiao)+"小于庄家。庄家赢")
            suanqian(person,beishu,i,diqian,-1)
        if dianshudaxiao[i]==dianshudaxiao[0] and touxiang[i]==0:
            print("闲家"+str(i)+"的点数为"+str(dianshudaxiao)+"等于庄家。平局")
    print("各个闲家的倍数为:")
    print(beishu[1:])
    print("这局结果")
    print(person)
    flag0=int(input("继续游戏(1)还是结束游戏(0)?"))
print("最终结果为")
print(person)

相关说明(我做的是一个简化了的21点没有分牌操作)

21点玩法规则(自己定了一个简化的玩法)
开局时,庄家给每个玩家牌面向上发两张牌(明牌)。再给自己发两张牌,一张明牌,一张暗牌玩家可以选择“继续拿牌、停牌、加倍(初始倍数为1)、或投降(庄家赢得一半赌注);”当所有玩家停止拿牌后,庄家翻开暗牌,并持续拿牌直至庄家停牌(他以为最大后 )最后庄家与闲家比大小。 大家手中扑克点数的计算是:2至9牌,按其原点数计算;K、Q、J和10牌都算作10点(一般记作T,即ten之意);A 牌(ace)既可算作1点也可算作11点, 由玩家自己决定 比大小:每张牌组成由字母与数字组成(a表示黑桃,b表示红桃,c表示梅花,d表示方块)不分花色;21点最大,超过21则表示爆掉直接输了¶
在这里插入图片描述
喂!老王。什么今晚去朋友家打21点?好好那你照顾好我老婆我马上去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值