提问人:Soupy Dude 提问时间:11/15/2023 更新时间:11/15/2023 访问量:30
如何修复此代码以在刽子手游戏的正确位置写字母?
How can I fix this code to write letters in the correct place for a hangman game?
问:
我正在上一门基于 Python 的计算机科学入门课。我正在做的一个项目是使用 Python图形制作一个刽子手游戏。我希望这段代码能够做的是写出用户猜对的单词的字母,并在用户猜错时画出刽子手的某个部分。现在,当用户正确猜出一个字母时,程序正在写字母,但不是在正确的位置,有时甚至根本没有。
在我当前的版本中,我有一个 for 循环遍历当前单词的字母。如果用户猜测的字母与单词中的字母相同,则(word_typer) 旨在将该字母写在屏幕上的正确位置。我在 while 循环中有了这个 for 循环,其中我还有变量“place”来跟踪正在写的字母,但这似乎仍然不起作用。
wrong_guesses = 0
guess_letter = ""
wrong_letters = 0
play = input("The theme of this hangman is chemistry! Would you like to play? y/n ")
def run():
global play, wrong_guesses, current_word, wrong_letters
if (play.lower() == 'y'):
new_word()
place = 0
while (wrong_guesses < 6):
guess_letter = input('Please guess a letter ')
letters_guessed.append(guess_letter)
for letter in current_word:
if guess_letter == letter:
word_typer.penup()
word_typer.goto(30 * place, 0)
word_typer.write(guess_letter, font=("Arial", 20, "bold"))
place += 1
for i in current_word:
if guess_letter != i:
wrong_letters += 1
if wrong_letters == len(current_word):
wrong_guesses += 1
draw_hangman()
else:
print("Maybe next time!")
答:
0赞
Dini
11/15/2023
#1
好吧,我没有从您发布的代码中找到足够的信息,您可以发送整个代码吗?
此外,我还设法以一种可以正常工作的方式修改代码(它缺少一些变量)。
wrong_guesses = 0
guess_letter = ""
wrong_letters = 0
letters_guessed = [] #stores the letter which are guessed by users
play = input("The theme of this hangman is chemistry! Would you like to play? y/n ")
def run():
global wrong_guesses, current_word, wrong_letters
if (play.lower() == 'y'):
new_word() #should generate a new word and add it to current_word
place = 0
while (wrong_guesses < len(curent_word)):
guess_letter = input('Please guess a letter ')
letters_guessed.append(guess_letter)
for letter in current_word:
if letter == guess_letter:
word_typer.penup()
word_typer.goto(30 * place, 0)
word_typer.write(guess_letter, font=("Arial", 20, "bold"))
place += 1
elif letter != guess_letter:
wrong_letters += 1
希望此代码对您有所帮助!
评论
place += 1
仅当当前字母是猜测的字母时才执行,但如果不是,也应该执行。它应该位于 if 块之外。一种更 Python 的方式是用于 for 循环。enumerate
NameError: name 'play' is not defined. Did you mean: 'place'?
run()