如何改进 Hangman 游戏中的错误猜测判断逻辑

69 阅读3分钟

在 Python 中编写一个 Hangman 游戏,目的是让玩家猜测一个神秘单词,最多允许 6 次错误猜测。玩家每次输入一个字母,如果这个字母在神秘单词中出现过,则提示玩家「The letter is in the word.」,如果不在神秘单词中出现过,则提示玩家「The letter is not in the word.」并在错误猜测次数上加 1。当错误猜测次数达到 6 次时,游戏结束,计算机获胜,并打印出神秘单词。

然而,在这个 Hangman 游戏中存在一个小问题,即玩家在输入第六个错误猜测时,游戏就会结束,无论这个猜测是否正确。例如,如果神秘单词是「fairy」,玩家输入了「f」,这是正确的猜测,但如果接下来的六个猜测都是错误的,游戏仍然会结束,而不是继续让玩家猜测。

2、解决方案

为了解决这个问题,需要修改游戏中对错误猜测的判断逻辑,使得只有在玩家输入了 6 个错误猜测后游戏才会结束。以下提供两种解决方案:

解决方案一:

# ...省略原有代码...

while guesses < 6:
    guess = input("Please enter the letter you guess: ")

    if guess in words[i]:
        print("The letter is in the word.")
    else:
        print("The letter is not in the word.")
        guesses = guesses + 1  # 错误猜测次数加 1

# 修改了以下代码
if guesses == 6:
    print("Failure. The word was:", words[i])
elif guess in words[i]:
    print("Congratulations! You guessed the word correctly.")
else:
    print("You ran out of guesses. The word was:", words[i])

在上面的代码中,修改了对错误猜测次数的判断逻辑,使得只有在玩家输入了 6 个错误猜测后游戏才会结束并打印出神秘单词。同时,增加了对正确猜测的判断,如果玩家在 6 次错误猜测内猜对了神秘单词,则打印出「Congratulations! You guessed the word correctly.」

解决方案二:

# ...省略原有代码...

incorrect_guesses = 0  # 初始化错误猜测次数

while incorrect_guesses < 6:
    guess = input("Please enter a letter to guess: ")

    if guess in words[i]:
        print('Correct! The letter "' + guess + '" appears in the word ' + str(words[i].count(str(guess))) + ' times.')
    else:
        print('Sorry, the letter "' + guess +
              '" is not in the word.')
        incorrect_guesses = incorrect_guesses + 1  # 错误猜测次数加 1

# 修改了以下代码
if incorrect_guesses == 6:
    print("Failure. The word was:", words[i])
elif guess in words[i]:
    print("Congratulations! You guessed the word correctly.")
else:
    print("You ran out of guesses. The word was:", words[i])

在上面的代码中,使用了一个新的变量 incorrect_guesses 来记录错误猜测次数,并将其初始化为 0。然后在 while 循环中,对玩家输入的字母进行判断,如果在神秘单词中出现过,则打印出「Correct! The letter "' + guess + '" appears in the word ' + str(words[i].count(str(guess))) + ' times.」 否则打印出「Sorry, the letter "' + guess + '" is not in the word.」并增加错误猜测次数。

代码例子:

# Hangman 游戏代码

import random

# 创建神秘单词列表
words = ["utopian", "fairy", "tree", "monday", "blue"]

# 随机选择一个神秘单词
secret_word = random.choice(words)

# 初始化错误猜测次数
incorrect_guesses = 0

# 开始游戏循环
while incorrect_guesses < 6:

    # 提示玩家输入字母
    guess = input("Please enter a letter to guess: ")

    # 判断玩家输入的字母是否在神秘单词中出现过
    if guess in secret_word:
        print('Correct! The letter "' + guess + '" appears in the word ' + str(secret_word.count(str(guess))) + ' times.')
    else:
        print('Sorry, the letter "' + guess + '" is not in the word.')
        incorrect_guesses += 1

# 游戏结束,判断输赢
if incorrect_guesses == 6:
    print("Failure. The word was:", secret_word)
elif guess in secret_word:
    print("Congratulations! You guessed the word correctly.")
else:
    print("You ran out of guesses. The word was:", secret_word)

希望通过这篇文章,能够帮助大家解决 Hangman 游戏中错误猜测判断的逻辑问题,并提供一些有用的代码示例。