This is my current code, Im looking for any help as to how to replace the blanks with the letter/word. I am new to coding and this seems to be one issue I have been having. I have tried to look up and see different answers for this question before but I can't find a solution that I myself can understand.
#import-statements#
import random
import turtle as hangman
import time
#game-configuration#
words_list = ["aardvark","special","mathematics","tabletop","dog","crazy","stop"]
background = hangman.Screen()
background.setup(400,450)
background.bgcolor("lightblue")
font_setup = ("Arial", 20, "Normal")
hangman.penup()
#functions#
def description_name():
print("Welcome to hangman. Your goal is to guess the word. You may guess words or letters, just remember you have six tries.")
print("======================================")
name = input("Enter a username of your choice: ")
print("Ok " str(name) ", lets begin!")
#-hangman_noose_function-#
def hangman_pole():
hangman.penup()
hangman.goto(-100,150)
hangman.pendown()
hangman.forward(100)
hangman.right(90)
hangman.forward(180)
hangman.right(90)
hangman.forward(65)
hangman.left(180)
hangman.forward(130)
#-Main game function-#
def game(word):
hangman_pole()
trials = 6
words_guessed = []
guessed_letters = []
wrong_guesses = []
right_guesses = []
description_name()
guessed = False
print("======================================")
#-hangman drawings based off tries-#
def hangman_graphic(hangmanparts):
#drawing head#
if hangmanparts == 5:
hangman.penup()
hangman.goto(-100,50)
hangman.pendown()
hangman.circle(50)
#drawing body#
elif hangmanparts == 4:
hangman.penup()
hangman.right(90)
hangman.pendown()
hangman.forward(90)
#drawing left arm#
elif hangmanparts == 3:
hangman.penup()
hangman.right(180)
hangman.forward(45)
hangman.left(45)
hangman.pendown()
hangman.forward(50)
#drawing right arm#
elif hangmanparts == 2:
hangman.penup()
hangman.right(180)
hangman.forward(50)
hangman.left(90)
hangman.pendown()
hangman.forward(50)
#drawing left leg#
elif hangmanparts == 1:
hangman.penup()
hangman.left(180)
hangman.forward(50)
hangman.left(45)
hangman.forward(45)
hangman.right(45)
hangman.pendown()
hangman.forward(60)
#drawing right leg#
elif hangmanparts == 0:
hangman.penup()
hangman.left(180)
hangman.forward(60)
hangman.right(90)
hangman.pendown()
hangman.forward(60)
#iteration loop for guessing#
while guessed is False and trials > 0:
print(str(trials) " tries left" )
print("Correct Guessed Letters:" str(right_guesses))
print("Wrong Guessed Letters:" str(wrong_guesses))
print("Wrong Guessed Words:" str(words_guessed))
player_guess = input("Please guess a letter or a word: ").lower()
print("======================================")
if len(player_guess) == 1:
#if the guess was already guessed#
if player_guess in guessed_letters:
print("Sorry, you lost a try, remember this letter was already guessed. Go again: ")
trials = trials - 1
hangman_graphic(trials)
#checks if the guess is not in the word#
elif player_guess not in word:
print("Incorrect! " str(player_guess) " is not in the word.")
guessed_letters.append(player_guess)
wrong_guesses.append(player_guess)
trials = trials - 1
hangman_graphic(trials)
#checks if guess is found in the word#
elif player_guess in word:
print("Correct! " str(player_guess) " is in the word!")
guessed_letters.append(player_guess)
right_guesses.append(player_guess)
else:
#checks if the guess is a letter in the alphabet#
if not player_guess.isalpha():
print("Invalid guess: ")
elif len(player_guess) > 1 and player_guess.isalpha():
#checks if the guess is not the word#
if player_guess != word:
print(str(player_guess) ' is not the secret word!')
words_guessed.append(player_guess)
trials = trials - 1
hangman_graphic(trials)
elif player_guess in words_guessed:
print("Sorry, you lost a try, remember this word was already guess. Go again: ")
trials = trials - 1
hangman_graphic(trials)
else:
#checks if the word is the hangman secret word#
if player_guess == word:
guessed == True
print("Nice you guessed the word! It was " str(player_guess))
print("======================================")
ask = input("Would you like to play again? Y/N")
if ask == "Y" or "y":
print("======================================")
hangman.reset()
game(word)
if trials == 0:
print("======================================")
print('Sorry, you are out of tries. The word was ' str(word))
print("======================================")
ask = input("Would you like to play again? Y/N")
if ask == "Y" or "y":
print("======================================")
hangman.reset()
game(word)
else:
quit()
#allows the game to run#
def run():
word = random.choice(words_list)
game(word)
run()
CodePudding user response:
Add something along these lines to the section of code where you print the current game status:
print(' '.join(c if c in right_guesses else "_" for c in word))
print(f"{trials} tries left" )
print(f"Correct Guessed Letters: {right_guesses}")
print(f"Wrong Guessed Letters: {wrong_guesses}")
print(f"Wrong Guessed Words: {words_guessed}")
In other words -- for each letter of word
, print a blank if the letter hasn't been guessed, or the letter itself if it has been.
CodePudding user response:
print(''.join([l if l in right_guesses else '?' for l in word ]))
You can insert this code in line 95 with a character different from empty string. In this example I used the '?', but you can insert also a '_' or a '*'
Here a output example:
======================================
???????
6 tries left
Correct Guessed Letters:[]
Wrong Guessed Letters:[]
Wrong Guessed Words:[]
Please guess a letter or a word: a
======================================
Correct! a is in the word!
?????a?
6 tries left
Correct Guessed Letters:['a']
Wrong Guessed Letters:[]
Wrong Guessed Words:[]
Here the python code, with the addition of this:
#import-statements#
import random
import turtle as hangman
import time
#game-configuration#
words_list = ["aardvark","special","mathematics","tabletop","dog","crazy","stop"]
background = hangman.Screen()
background.setup(400,450)
background.bgcolor("lightblue")
font_setup = ("Arial", 20, "Normal")
hangman.penup()
#functions#
def description_name():
print("Welcome to hangman. Your goal is to guess the word. You may guess words or letters, just remember you have six tries.")
print("======================================")
name = input("Enter a username of your choice: ")
print("Ok " str(name) ", lets begin!")
#-hangman_noose_function-#
def hangman_pole():
hangman.penup()
hangman.goto(-100,150)
hangman.pendown()
hangman.forward(100)
hangman.right(90)
hangman.forward(180)
hangman.right(90)
hangman.forward(65)
hangman.left(180)
hangman.forward(130)
#-Main game function-#
def game(word):
hangman_pole()
trials = 6
words_guessed = []
guessed_letters = []
wrong_guesses = []
right_guesses = []
description_name()
guessed = False
print("======================================")
#-hangman drawings based off tries-#
def hangman_graphic(hangmanparts):
#drawing head#
if hangmanparts == 5:
hangman.penup()
hangman.goto(-100,50)
hangman.pendown()
hangman.circle(50)
#drawing body#
elif hangmanparts == 4:
hangman.penup()
hangman.right(90)
hangman.pendown()
hangman.forward(90)
#drawing left arm#
elif hangmanparts == 3:
hangman.penup()
hangman.right(180)
hangman.forward(45)
hangman.left(45)
hangman.pendown()
hangman.forward(50)
#drawing right arm#
elif hangmanparts == 2:
hangman.penup()
hangman.right(180)
hangman.forward(50)
hangman.left(90)
hangman.pendown()
hangman.forward(50)
#drawing left leg#
elif hangmanparts == 1:
hangman.penup()
hangman.left(180)
hangman.forward(50)
hangman.left(45)
hangman.forward(45)
hangman.right(45)
hangman.pendown()
hangman.forward(60)
#drawing right leg#
elif hangmanparts == 0:
hangman.penup()
hangman.left(180)
hangman.forward(60)
hangman.right(90)
hangman.pendown()
hangman.forward(60)
#iteration loop for guessing#
while guessed is False and trials > 0:
print(''.join([l if l in right_guesses else '?' for l in word ]))
print(str(trials) " tries left" )
print("Correct Guessed Letters:" str(right_guesses))
print("Wrong Guessed Letters:" str(wrong_guesses))
print("Wrong Guessed Words:" str(words_guessed))
player_guess = input("Please guess a letter or a word: ").lower()
print("======================================")
if len(player_guess) == 1:
#if the guess was already guessed#
if player_guess in guessed_letters:
print("Sorry, you lost a try, remember this letter was already guessed. Go again: ")
trials = trials - 1
hangman_graphic(trials)
#checks if the guess is not in the word#
elif player_guess not in word:
print("Incorrect! " str(player_guess) " is not in the word.")
guessed_letters.append(player_guess)
wrong_guesses.append(player_guess)
trials = trials - 1
hangman_graphic(trials)
#checks if guess is found in the word#
elif player_guess in word:
print("Correct! " str(player_guess) " is in the word!")
guessed_letters.append(player_guess)
right_guesses.append(player_guess)
else:
#checks if the guess is a letter in the alphabet#
if not player_guess.isalpha():
print("Invalid guess: ")
elif len(player_guess) > 1 and player_guess.isalpha():
#checks if the guess is not the word#
if player_guess != word:
print(str(player_guess) ' is not the secret word!')
words_guessed.append(player_guess)
trials = trials - 1
hangman_graphic(trials)
elif player_guess in words_guessed:
print("Sorry, you lost a try, remember this word was already guess. Go again: ")
trials = trials - 1
hangman_graphic(trials)
else:
#checks if the word is the hangman secret word#
if player_guess == word:
guessed == True
print("Nice you guessed the word! It was " str(player_guess))
print("======================================")
ask = input("Would you like to play again? Y/N")
if ask == "Y" or "y":
print("======================================")
hangman.reset()
game(word)
if trials == 0:
print("======================================")
print('Sorry, you are out of tries. The word was ' str(word))
print("======================================")
ask = input("Would you like to play again? Y/N")
if ask == "Y" or "y":
print("======================================")
hangman.reset()
game(word)
else:
quit()
#allows the game to run#
def run():
word = random.choice(words_list)
game(word)
run()