老版不删对照
import random
bjl_xj = int(random.randint(1,13))
bjl_zj = int(random.randint(1,13))
s1 = 1
s2 = 1
print('闲家第',s1,'个数值',bjl_xj,'点,','是否叫牌')
print('叫牌请按:',1,'锁牌请按:',2)
xj_1 = int(input())
if xj_1 == 1:
while bjl_xj < 21 and xj_1 == 1:
del xj_1
s1 = 1+s1
bjl_qk = int(random.randint(0,13))
bjl_xj = bjl_xj + bjl_qk
print('闲家第', s1, '个数值', bjl_qk, '点')
print('闲家共计', bjl_xj, '点')
if bjl_xj < 21 :
print('闲家是否继续叫牌')
print('叫牌请按:', 1, '锁牌请按:', 2)
xj_1 = int(input())
if xj_1 != 1:
print('闲家弃牌,庄家叫牌')
print('庄家第', s2, '个数值', bjl_zj, '点')
while bjl_zj < bjl_xj :
s2 = 1 + s2
bzj_qk = int(random.randint(0, 13))
bjl_zj = bjl_zj + bzj_qk
print('庄家第', s2, '个数值', bzj_qk, '点')
del s2
print('庄家共计', bjl_zj, '点')
if bjl_zj > bjl_xj and bjl_zj >= 21:
print('庄家胜利')
break
elif bjl_zj < bjl_xj and bjl_xj >= 21:
print('庄家胜利')
break
elif bjl_xj > 21:
print('Game Over')
elif bjl_xj == 21:
print('庄家第', s2, '个数值', bjl_zj, '点')
while bjl_zj < bjl_xj:
s2 = 1 + s2
bzj_qk = int(random.randint(0, 13))
bjl_zj = bjl_zj + bzj_qk
print('庄家第', s2, '个数值', bzj_qk, '点')
del s2
print('庄家共计', bjl_zj, '点')
if bjl_zj > bjl_xj and bjl_zj >= 21:
print('庄家胜利')
break
elif bjl_zj < bjl_xj and bjl_xj >= 21:
print('庄家胜利')
break
elif bjl_zj > 21:
print('闲家胜利')
break
elif xj_1 != 1:
print(bjl_xj)
print('庄家第', s1, '个数值', bjl_zj, '点')
while bjl_zj < bjl_xj:
s2 = 1 + s1
bzj_qk = int(random.randint(0, 13))
bjl_zj = bjl_zj + bzj_qk
print('庄家第', s2, '个数值', bzj_qk, '点')
del s2
print('庄家共计', bjl_zj, '点')
if bjl_zj > bjl_xj and bjl_zj >= 21:
print('庄家胜利')
break
elif bjl_zj < bjl_xj and bjl_xj >= 21:
print('庄家胜利')
break
else:
print('庄家胜利')
新版未完待续…(有空再说)
import random
import string
''' 21 点规则
庄家:游戏中第一个坐下的玩家默认为庄家。
闲家:本轮不坐庄的玩家。
点数计算:每张牌都有点数,2到10的牌的点数就是其牌面的数字;J、Q、K的点数是10分;A有两种算法,1或者11,如果A算为11时总和大于21,则A算为1。例如(A,8)是19点,(A,7,J)则为18点。
爆牌:玩家手中牌的总点数超过21点。
黑杰克(BlackJack):一张A带一张10点的牌,比其他21点的牌大,例如(A,Q)。闲家获得黑杰克,可以获得所下注的1.5倍。
停牌:玩家不再要牌,等待其他玩家操作。
要牌:
.闲家根据自己手上的点数决定是否要牌,如果要牌,则系统再发一张牌给玩家。如果要牌后总点数超过21,则算爆牌,玩家输掉本轮游戏;若要牌后点数为21点,则不能再要;如果要牌后总点数不到21点,则玩家可以继续“要牌”“停牌”“加倍”。
.庄家持牌总点数少于17,则必须要牌,直到超过16,如果庄家的总点数等于或多于17点,则必须停牌。如果庄家手中有A,且A作11点时大于16点,做1点时小于或等于16点,则由庄家自己选择是否要牌。
加倍:双倍下注(Double)如果您已经抽取了两张纸牌,在这两张牌不是“黑杰克”的前提下,如果认为第三张牌可以让您赢过庄家的手牌,您可以要求「双倍押注」。您的赌注将增加双倍,而您只可以再抽取一张额外纸牌。
保险:发过牌后如果庄家手中拿到明牌A,玩家就有机会买保险,保险金是玩家当初下注的一半。
.如果玩家选择保险:
庄家是黑杰克时,庄家只蠃得保险金。
庄家不是黑杰克,庄家首先收走保险金,然后进行要牌、比较的程序,与前述相同。
如果玩家拿到21点,仍能拿到全部的酬金。
.如果玩家不选择保险:
庄家是黑杰克时,收走玩家赌金。
庄家不是黑杰克,仍然进行要牌、比较等程序,与前述相同。
对子:闲家可以选择在自己或其他闲家上下注押对子,如果所压的闲家获得对子(即两张相同种类的牌),则下注闲家胜,庄家赔11倍的筹码。
分牌:若玩家获得对子,则可以选择分牌,将这两张牌分成两手牌,由这个玩家一人操作,每手牌的赌注与开始的赌注相同。分牌后不能“加倍”,拿到BlackJack牌型也只算普通的21点。
牌型比较
所有闲家都与庄家比较。
黑杰克为特殊牌型,比其他所有牌型都大。除黑杰克,其他牌型都以点数比较大小。
庄家和闲家点数相同,或都拿到黑杰克,则为平局。
庄家和闲家都爆牌,系统判断庄家赢。
'''
color_dic = {"♤":{},"♢":{},"♡":{},"♧":{}}
guest_dic = {}
host_guset = {}
color_lis = []
user_set = []
count = 0
inc = 0
for i in range(1,57):
count += 1
if count < 14:
if count == 1:
st_brk = 'A'
elif count == 11:
st_brk = 'J'
elif count == 12:
st_brk = 'Q'
elif count == 13:
st_brk = 'K'
else:
st_brk = str(count)
combination = "".join(color_dic.keys())[inc] + st_brk
color_dic[combination[0]].setdefault(combination,count)
color_lis.append(combination)
else:
count = 0
inc += 1
print(color_lis)
''' 正式开始21点逻辑 '''
numpeo = int(input("最多五人同桌,请输入入席人数:"))
for i in range(1,numpeo+1):
if i == numpeo:
host_name = input("请输入庄家的名字:")
host_guset.setdefault(host_name,[])
else:
name = input("请输入闲家的名字:")
guest_dic.setdefault(name,[])
print(guest_dic,host_guset)
for k,v in guest_dic.items():
count =+ 1
muv = int(random.randint(1, len(color_lis)))
a1 = color_lis[muv]
guest_dic[k].append(color_dic[a1[0]][a1])
user_set.append(color_lis[muv])
print(f"闲家{k}:{user_set},是否叫牌")
button = input('叫牌请按:1\n锁牌请按任意键\n')
while button == "1":
if sum(guest_dic[k]) < 21:
muv = int(random.randint(1, len(color_lis)))
a1 = color_lis[muv]
guest_dic[k].append(color_dic[a1[0]][a1])
user_set.append(color_lis[muv])
print(f"闲家{k}:{user_set},是否叫牌")
button = input('叫牌请按:1\n锁牌请按:2\n')
else:
print("您爆了")
break
else:
continue
user_set.clear()
for k,v in host_guset.items():
while sum(host_guset[k]) < 17:
muv = int(random.randint(1, len(color_lis)))
a1 = color_lis[muv]
host_guset[k].append(color_dic[a1[0]][a1])
user_set.append(color_lis[muv])
if sum(host_guset[k]) > 21:
print("您爆了")
break
else:
if sum(host_guset[k]) > 21:
print("您爆了")
break
else:
print(f"庄家{k}:{user_set},是否叫牌")
button = input('叫牌请按:1\n锁牌请按:2\n')
while button == "1":
muv = int(random.randint(1, len(color_lis)))
a1 = color_lis[muv]
host_guset[k].append(color_dic[a1[0]][a1])
user_set.append(color_lis[muv])
print(f"庄家{k}:{user_set},是否叫牌")
button = input('叫牌请按:1\n锁牌请按:2\n')
if sum(host_guset[k]) > 21:
print("您爆了")
break
user_set.clear()