想做一个刽子手游戏。无法使playerLives变量正确减小

2024-04-25 17:42:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我在试着做一个刽子手游戏。到目前为止,我已经让它非常有效地工作时,它是循环通过秘密的话,并返回结果。每次提交错误的答案时,我的playerLives变量都会正确地递减,但是当我试图整理代码时,它就停止工作了,我一辈子都不能让它值递减

def checkSecretWord(secretWord, guess, playerLives):
letterConfirm = False
letterDeny = False
for i in range(0, len(secretWord)):

    if secretWord[i] == guess:
        letterConfirm = True

    if guess not in secretWord:
        letterDeny = True


if letterConfirm:
    print("Correct Guess!")

if letterDeny:
    print("Incorrect Guess! Try again!")
    playerLives -= 1
    return playerLives




def gameRunning():
    gameActive = True
    secretWord = getSecretWord()
    guessed_letters = []
    playerLives = 6
    while gameActive:
        makeBoard(playerLives, secretWord, guessed_letters)
        guess = checkLetter(guessed_letters)
        checkSecretWord(secretWord, guess, playerLives)
        print("You have {} lives reminaing".format(playerLives))

函数的作用是:在密文中搜索用户输入的字母('guess')。它正确地返回“错误的猜测!再试一次!”当letterConfirm为true时(也就是说,该字母与秘密单词中的字母不匹配),但它似乎不会像我希望的那样将变量“playerLives”的值减少1

编辑:我知道“return playerLives==playerLives-1”毫无意义,只是写得很糟糕,但这是我求助前最后一次绝望的尝试

编辑二:谢谢大家的帮助。整理问题,吸取教训。干杯


Tags: trueifdef错误字母整理秘密print
1条回答
网友
1楼 · 发布于 2024-04-25 17:42:34

你有一些问题

你的第一个函数是空的。我们把那上面的标签修好

def checkSecretWord(secretWord, guess, playerLives):
    letterConfirm = False
    letterDeny = False
    for i in range(0, len(secretWord)):

        if secretWord[i] == guess:
            letterConfirm = True

        if guess not in secretWord:
            letterDeny = True


    if letterConfirm:
        print("Correct Guess!")
        return playerLives  #THIS IS THE BIG CHANGE

    if letterDeny:
        print("Incorrect Guess! Try again!")
        return playerLives - 1 #THIS IS THE BIG CHANGE

你把playerlives当作一个全局变量,你需要重写它,这样我们才能正确地增加playerlives

def gameRunning():
    gameActive = True
    secretWord = getSecretWord()
    guessed_letters = []
    playerLives = 6
    while gameActive:
        makeBoard(playerLives, secretWord, guessed_letters)
        guess = checkLetter(guessed_letters)
        playerLives = checkSecretWord(secretWord, guess, playerLives) # see "the big changes" I made earlier
        print("You have {} lives reminaing".format(playerLives))

相关问题 更多 >