Python 试图为21点游戏开发一个计分系统

Python 试图为21点游戏开发一个计分系统,python,Python,所以我正试图用我现在的21点代码制作一个计分系统。游戏是对电脑和玩家的,游戏规则有点不同,但这一切都已经设置好了。我需要为玩家和计算机的卡打分的代码。如果要避免破坏,我还应该将ace设置为值1。我想在抽牌时这样做,但我不完全确定。我尝试了跨类变量,但没有发现太多成功。也许我可以融合玩家和甲板类 无论如何,这就是我所拥有的,我会提供你需要的更多信息,并且会有相当透彻的评论 #这是21点对电脑的游戏。 # -----------------------------------------------

所以我正试图用我现在的21点代码制作一个计分系统。游戏是对电脑和玩家的,游戏规则有点不同,但这一切都已经设置好了。我需要为玩家和计算机的卡打分的代码。如果要避免破坏,我还应该将ace设置为值1。我想在抽牌时这样做,但我不完全确定。我尝试了跨类变量,但没有发现太多成功。也许我可以融合玩家和甲板类

无论如何,这就是我所拥有的,我会提供你需要的更多信息,并且会有相当透彻的评论

#这是21点对电脑的游戏。
# ------------------------------------------------------------------------------------------------------
#导入必要的文件
随机输入
#一对全局变量,用于任何必要的重复和评分。
RepeatCardChoice=0
你的分数=0
计算机分数=0
命中率=0#玩家命中的次数。用于展示卡片。
#我们的甲板本身。
课堂卡片:#这是为了首先开发卡片。
定义初始(自我、西装、军衔):
西服
self.rank=等级
def显示(自我):
打印(str(self.rank)+str(self.suit))
类组:#用于组组行为和创建组。
定义初始化(自):
self.cards=[]
self.Cards()
def卡(自):
对于[“S”、“C”、“D”、“H”]:#S=黑桃,C=梅花,D=钻石,H=红桃
对于范围(1,14)中的排名:
价值=等级
如果秩==1:
排名='A'#使所有1个值=到ace。
elif秩==11:
秩='J'#使所有11个值=到杰克或J。
elif秩==12:
秩='Q'#使所有12个值=成为皇后或Q。
elif秩==13:
秩='K'#使所有13个值=国王或K。
如果秩==(11)或(12)或(13):
值=10
elif秩==1:
值==11
自我价值=价值
自我。卡片。附加(卡片(套装,等级))
def show(self):#单独显示每张卡。
对于self.cards中的卡:
show()#实际上只是重用另一个函数来显示结果。
def随机播放(自):
随机。洗牌(自我。牌)
def提款卡(自助):
return self.cards.pop()
职业玩家:#本课程用于玩家的行为,如画画和展示你的手。
定义初始化(self,name):
self.name=name#允许玩家选择自己的名字。
self.hand=[]#将他们的卡分配到要保存的列表中。
self.Deck=Deck()
def抽牌(自我、牌组、牌数):#玩家一次抽一张牌的方式。没有必要允许更多。
计数=0
一边数数!=卡数:
计数+=1
self.hand.append(deck.drawCard())
回归自我
def showHand(self,showCount):#显示玩家手中的每张牌。
计数=0#计数器用于限制提取的金额。
对于self.hand中的卡片:#这样“卡片”就不会成为未解析的引用。
如果count==showCount:
返回
计数+=1
card.show()
#下面是我们应用课程和玩游戏的地方。与播放机不同,计算机将在没有输入的情况下运行。
#这是甲板。
甲板
洗牌准备时洗牌。
PlayerName=str(输入(“你叫什么名字?”)#这样玩家就可以选择自己的名字了。
#设置球员。
计算机=播放器(“计算机”)
你=玩家(玩家名称)
#让两名球员开始比赛。
计算机绘图(甲板,2)
你画(甲板,2)
#这里显示的是每只手一张牌。
打印('您正在显示:')
你,表演者(1)
打印('计算机正在显示:')
计算机.展示手(1)
#这里是你决定击球或站立的地方。
当RepeatCardChoice==0时:
CardChoice=str(输入('Hit(H)或Stand(S)'))
如果CardChoice==“H”:
你画(甲板,1)
命中率+=1
你。秀手(1+命中率)
RepeatCardChoice=0#这样玩家就可以继续决定是否仍要击球?
elif CardChoice==“S”:
RepeatCardChoice=21#明白了吧,因为21点的中奖分数是21?
命中率=0
其他:
RepeatCardChoice=0
#这是我们检查你成绩的地方。
如果您的分数>21:
退出('你失败了,电脑赢了!')
elif YourScore==21:
退出(“21点,你赢了!”)
#这里是电脑的位置。
电脑评分21分:
退出(“计算机坏了,你赢了!”)
elif ComputerScore==21:
退出(“21点,计算机赢!”)
#这里是我们比较分数来决定胜利者的地方。
如果ComputerScore>YourScore:
退出('计算机获胜!')
elif YourScore>ComputerScore:
退出(“你赢了!”)
elif ComputerScore==您的分数:
退出('你打成平手')
如果评分系统成功,输出不应该提供任何错误,我设置了一些变量,可以用来分配分数,但是可以根据需要进行更改。这是输出结果

你叫什么名字?样本
您正在显示:
KC
计算机显示:
JS
击中(H)或站立(S)?H
KC
8S
击中(H)或站立(S)?S
JS
...
回溯(最近一次呼叫最后一次):
文件“已审查”,第119行,在
计算机绘图(甲板,1)
文件“已删除”,第66行,在绘图中
self.hand.append(deck.drawCard())
文件“已审查”,第54行,在drawCard中
return self.cards.pop()
索引器:从空列表中弹出
基本上,现在发生的情况是,由于没有得分,计算机会无限地命中,直到没有任何东西可以抽签,这是在你站起来之后。我跳过了很多