利用Python编写11点游戏的程序
要求:
1.生成一副扑克牌(自行确定值来代表各牌,需要注释)
2.玩家为自己,需要用循环,条件等知识点进行编写。
3.发牌规则:
①默认先给用户发一张牌,其中 J、Q、K、小王、大王代表的值为0.5,其它牌的值则为当前牌面值的值。
②系统随机收取一张牌(玩家不可见数值),玩家根据自己的情况判断是否要牌。
要,则再给玩家发。(可以重复要牌,但牌数的总和值不能大于11,如果牌数的总和值大于11则判断玩家输了,并咨询玩家是否继续游戏;如果牌数的总和值刚好等于11则判断玩家赢了,并咨询玩家是否继续游戏)
不要,则重新随机抽取一张牌,玩家重新根据自己的情况判断是否要牌。(玩家可多次不要牌,但超出3次不要牌则判断玩家输了,并咨询玩家是否继续游戏)
'''任意序列,N位数字排列数量'''
import random
dec = ["方块","黑桃","红桃","梅花"]
num = [i for i in range(1,11)]+["J","Q","K"]
while True:
n=3
point = 0
poker = [(i,k)for i in dec for k in num]+[('大王',0.5,),("小王",0.5)]
card = random.choice(poker)
poker.remove(card)
cards=[card,]
while True:
print("你得牌面是{}".format(cards))
f=input("是否要牌:(是Y,否N)")
if f=='N':
n -=1
if n==0:
print("超过三次不要牌,你输了")
break
else:
card=random.choice(poker)
cards.append(card)
poker.remove(card)
point = sum(i[1] if isinstance(i[1],int) else 0.5 for i in cards)
if point==11:
print("你得牌面是{}".format(cards))
print("你赢了")
break
elif point>11:
print("你得牌面是{}".format(cards))
print("你输了")
break
fl = input("是否继续游戏:(是Y,否N)")
if fl=="N":
break
else:
pass
dict存储扑克牌和对应的值
然后list存储扑克牌的名字,random获取
发送一张牌(第一张默认,之后的询问)
tkinter询问是否收下,是的话字典获取值累加大小,不是的话继续random
然后不收下就计次,超过三次tkinter提醒结束游戏,并询问是否继续
继续的话重置变量,不继续就quit
思路差不多是这样,你自己试试,不会再接着问