我试图在 python 中制作黑杰克游戏,但我在代码中遇到了很多无法修复的错误。二十一点规则:
“游戏的目标是获得21分或接近21分。如果玩家得分超过21分,那么他的赌注输了。如果庄家牌上的点数大于21,那么剩下的所有赌注game win. 闲家,得分多于庄家者获胜,他们的赌注按1:1赔付。
这是完整的代码,之后我将写下我遇到的所有错误。
import random
score = random.randint(4, 20) #пользователь
scoreBot = random.randint(4, 20) #дилер
print("Поиграем в твое очко!")
print("Если ты набрал 21, то нажми \n'Enter'")
print("Если больше не хочешь играть, то напиши английскую 'e'")
state = ("Победил", "Проиграл")
class Game:
isWin = 0
def getCard(self):
return random.randint(2,10)
def AI(self):
if scoreBot < 21:
scoreBot += getCard()
def getResult(self):
if score > scoreBot: isWin = 1
else:
isWin = 0
if score > 21:
win = 0
print("У противника ",scoreBot," очков, у тебя ", score)
print("Ты", state[isWin])
print("Если хочешь сыграть еще, то нажми \n'Enter'")
print("------------")
if score == 21:
win = 1
print("У противника ",scoreBot," очков, у тебя ", score)
print("Ты выйграл!")
print("Если хочешь сыграть еще, то нажми \n'Enter'")
print("------------")
game=Game()
choose = ''
while choose != 'e':
if score > 21:
game.getResult()
print("У противника ",scoreBot," очков, у тебя ", score)
choose = input('Взозьмешь карту? (+)/(-)\n')
if choose == '+':
score += game.getCard()
elif choose == '-':
print(" Ты набрал ", score)
else:
game.getResult()
score = random.randint(4, 20)
scoreBot = random.randint(4, 20)
- 当您获胜或反之获胜时,计分器不会重置。
- 如果用户下注
-,那么庄家不想拿牌,然后一切都崩溃了。 - 还有,当,当用户还是这21分的时候,那你又要点击了
Enter,这是不应该的。 - 好吧,我遇到的最后一个错误是用户可以无休止地单击
+并且计数器可以达到很大的值,这是不应该的。
首先,您需要将所有内容转移到类中,以免与变量混淆。但是,为了赢,不拿牌就足够了,据我了解,庄家不一定要拿牌,或者仍然有规则。
这是更正后的代码: