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点?好好那你照顾好我老婆我马上去。