如何修复此代码以在刽子手游戏的正确位置写字母?

问题描述 投票:0回答:1

我正在参加基于 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!")
python function turtle-graphics python-turtle
1个回答
0
投票

嗯,我没有从您发布的代码中找到足够的信息,您可以发送整个代码吗?

我还设法以一种可以正常工作的方式修改代码(它缺少一些变量)。

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

希望这段代码对您有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.