我正在为一个课程制作一个简单的"hangman"游戏,游戏已经完成,可以运行了,但是我想覆盖while循环在控制台中打印的输出,这样它看起来更干净,更像一个实际的游戏,而不仅仅是连续的打印语句。
下面是while循环本身和一些背景知识:在程序开始时,从列表word_list
中随机选择一个单词,并将其放入变量choected_word;还有一个变量display = []
,它是一个列表,其中chosen_word
中的每个字母都用"_"填充;然后玩家进行猜测,直到完成6次循环,到达exit()
。
或者,在到达exit()
之前,通过猜测所有字母来退出循环。
while "_" in display:
counter = 0
guess = input(f"Please choose a letter: ").lower()
for letter in chosen_word:
counter += 1
if guess == letter:
display[counter -1] = letter
if guess in letters_used:
print("You already used this letter, please choose a different letter.")
print(" ")
continue
letters_used.append(guess)
if guess not in display:
loops += 1
print(stages[loops - 1])
print(" ".join(display))
print(f"You guessed {guess}, that's not in the word. You lose a life and have {6 - loops} lives left.")
print(f"So far you have used the letters: {letters_used}")
print(" ")
else:
print(" ".join(display))
print(" ")
if loops == 6:
print(f"You lose, as expected haha. The word was {chosen_word}")
exit()
else:
print("You win, finally...")
例如:单词"apple"。玩家输入"a",控制台填充a _ _ _ _
。然后他们可以猜"z",控制台将打印他们选错了,以及带有hangman的相应图片。我希望控制台覆盖之前的图片和a _ _ _ _ _
,这样它就只显示hangman,使用的字母,lives left和他需要猜的单词。
这似乎是一个很高的要求,但我知道这是可能做到的,只是不适用于我所尝试的。到目前为止,我尝试使用\r \n,
各种for循环与time
,sys
,但我不能集成他们。我认为,如果给出整个代码会更容易,所以这里有一个整个事情的粘贴框:https://codefile.io/f/mOJJ0u1vL00HbYfQ2A7O
总结一下:我想让程序运行,并在每次迭代时覆盖先前打印的刽子手图片、剩余生命和使用的单词,这样它看起来就像一个真正的游戏,而不仅仅是一些连续运行的打印语句。
1条答案
按热度按时间bqujaahr1#
我认为下面的 * 几乎 * 是有效的(它需要一点调整来正确地跟踪每种情况下要倒带的行数),使用here中的方法: