whileループが終了しないためにゲームが終了しないという問題は、is_word_guessed()がTrueを返します。 ゲームのルールは次のとおりです。 単語を推測するには6つの推測があります。テスト目的のために、私は現在secret_word = 'apple'を使用しています。私はランダムな単語を選択するコードを追加していない、それは正常に動作します。 あなたが正しく推測すれば、推測を失うことはありません。 あなたが間違っていると思われ、推測がボーカルである場合、あなたはの推測を失います。 あなたが間違っていると思われ、推測が子音である場合、あなたはとなります。 すでに推測している単語を推測したり、手紙ではない単語を推測したり、2つ以上の単語を推測すると、1つの警告が失われます。あなたは3つの警告から始めます。そしてそれらをすべて失うと、あなたは1つの推測を失います。最終的な得点は、secret_word *の推測の残りのユニーク文字の数です。Python hangmanのゲームループの終了問題
import string
secret_word='apple'
def is_word_guessed(secret_word, letters_guessed):
if secret_word == letters_guessed:
return True
else:
return False
def get_guessed_word(secret_word, letters_guessed):
b=''
for char in secret_word:
if char in letters_guessed:
b=b+char
else:
b=b+"_ "
return b
def get_available_letters(letters_guessed):
s=''
letters=string.ascii_lowercase
for char in letters:
if char not in letters_guessed:
s=s+char
return s
def get_unique_letters(secret_word):
unique=''
for char in secret_word:
if char not in unique:
unique+=char
return len(unique)
print (get_unique_letters(secret_word))
def hangman(secret_word):
print("Welcome to the game of hangman!")
print ("I am thinking a word that is", str(len(secret_word)), "long.")
warnings_remaining=3
guesses_remaining=6
letters_guessed=''
while not is_word_guessed(secret_word, letters_guessed):
# checking that user has guesses left
if guesses_remaining==0:
break
else:
# checking if we have to remove a guess
if warnings_remaining==0:
guesses_remaining-=1
warnings_remaining=3
print ("---------")
print("You have", str(guesses_remaining), "guesses left.")
print("Available letters:", get_available_letters(letters_guessed))
user_guess=input("Please guess a letter:")
# checking that the input is a valid letter
if len(user_guess) != 1 or user_guess not in string.ascii_letters:
warnings_remaining-=1
print("Oops! That is not a valid letter!", "You have", warnings_remaining, "warnings left.")
elif user_guess in letters_guessed:
warnings_remaining-=1
print("Oops! That letter has alredy been guessed. You now have", warnings_remaining, "warnings left.")
# checking if the guess is right or wrong
elif user_guess in secret_word:
letters_guessed+=user_guess
print ("Good guess:", get_guessed_word(secret_word, letters_guessed))
else:
letters_guessed+=user_guess
print ("Oops! That letter is not in my word:", get_guessed_word(secret_word, letters_guessed))
if user_guess in 'aeiou':
guesses_remaining-=2
else:
guesses_remaining-=1
if guesses_remaining==0:
print("Sorry, you ran out of guesses. The word was:", secret_word)
else:
print("Congratulations, you won!")
print("Your total score for this game is:", get_unique_letters(secret_word)*guesses_remaining)
hangman(secret_word)