Simple game of hangman which counts wins and losses

Clash Royale CLAN TAG#URR8PPP
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty margin-bottom:0;
up vote
5
down vote
favorite
I am trying to get this code on Python 3.6.3 to be:
More efficient
More readable
More simple
This code is supposed to be like hangman, just without the stickman. I also have added code which will count the amount of times you have won, lost and how many times you have played the game.
(I might put a bit of SQLite into this code so it stores how many points the player has, etc.)
However, the code below is extremely long, and I think that it could be greatly shortened.
Here is my code:
from random import randint as r
game_times = 0
if game_times == 0:
lives = 10
game = True
game_wins = 0
game_losses = 0
points = 0
space_1 = '__'
space_2 = '__'
space_3 = '__'
space_4 = '__'
space_5 = '__'
word_chooser_easy = (r(0, 5))
while game:
#this chooses a random word.
if word_chooser_easy == 0:
hangman_word = 'later'
letter_one = 'l'
letter_two = 'a'
letter_three = 't'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 1:
hangman_word = 'point'
letter_one = 'p'
letter_two = 'o'
letter_three = 'i'
letter_four = 'n'
letter_five = 't'
elif word_chooser_easy == 2:
hangman_word = 'water'
letter_one = 'w'
letter_two = 'a'
letter_three = 't'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 3:
hangman_word = 'joker'
letter_one = 'j'
letter_two = 'o'
letter_three = 'k'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 4:
hangman_word = 'maths'
letter_one = 'm'
letter_two = 'a'
letter_three = 't'
letter_four = 'h'
letter_five = 's'
elif word_chooser_easy == 5:
hangman_word = 'crazy'
letter_one = 'c'
letter_two = 'r'
letter_three = 'a'
letter_four = 'z'
letter_five = 'y'
#now we need to check if the person has won the game.
if space_1 != "__" and space_2 != "__" and space_3 != "__" and space_4 != "__" and space_5 != "__":
#print your congratulations for winning
print("Well done! You have won the game!")
game_times += 1
game_wins += 1
game = False
continue
#print the hangman.
print("This is your hangman:")
print(space_1 , " " , space_2 , " " , space_3 , " " , space_4 , " " , space_5)
which_letter = input("Which letter do you want to choose?")
if letter_one == which_letter:
#this means the player has guessed space 1 correctly.
print("Well done! You have guessed it correctly!")
space_1 = letter_one
elif letter_two == which_letter:
#this means the player has guessed space 2 correctly.
print("Well done! You have guessed it correctly!")
space_2 = letter_two
elif letter_three == which_letter:
#this means the player has guessed space 3 correctly.
print("Well done! You have guessed it correctly!")
space_3 = letter_three
elif letter_four == which_letter:
#this means the player has guessed space 4 correctly.
print("Well done! You have guessed it correctly!")
space_4 = letter_four
elif letter_five == which_letter:
#this means the player has guessed space 5 correctly.
print("Well done! You have guessed it correctly!")
space_5 = letter_five
else:
#this means the player got it wrong.
print("You were wrong...")
lives -= 1
if lives == 0:
print("Game over...")
game_losses += 1
game_times += 1
game = False
continue
else:
print("You now have" , lives , "lives left...")
else:
stats = input("Do you want to see your stats so far? y/n")
if stats == "y":
print("You have lost" , game_losses , "times, you have won" , game_wins , "times and you have played hangman" , game_times , "times.")
else:
pass
print("Your second game will be one that has more double lettered words in it...")
lives = 8
word_chooser_easy = (r(0, 5))
space_1 = '__'
space_2 = '__'
space_3 = '__'
space_4 = '__'
space_5 = '__'
while game:
#this chooses a random word.
if word_chooser_easy == 0:
hangman_word = 'later'
letter_one = 'l'
letter_two = 'a'
letter_three = 't'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 1:
hangman_word = 'point'
letter_one = 'p'
letter_two = 'o'
letter_three = 'i'
letter_four = 'n'
letter_five = 't'
elif word_chooser_easy == 2:
hangman_word = 'water'
letter_one = 'w'
letter_two = 'a'
letter_three = 't'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 3:
hangman_word = 'joker'
letter_one = 'j'
letter_two = 'o'
letter_three = 'k'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 4:
hangman_word = 'maths'
letter_one = 'm'
letter_two = 'a'
letter_three = 't'
letter_four = 'h'
letter_five = 's'
elif word_chooser_easy == 5:
hangman_word = 'crazy'
letter_one = 'c'
letter_two = 'r'
letter_three = 'a'
letter_four = 'z'
letter_five = 'y'
#now we need to check if the person has won the game.
if space_1 != "__" and space_2 != "__" and space_3 != "__" and space_4 != "__" and space_5 != "__":
#print your congratulations for winning
print("Well done! You have won the game!")
game_times += 1
game_wins += 1
game = False
continue
#print the hangman.
print("This is your hangman:")
print(space_1 , " " , space_2 , " " , space_3 , " " , space_4 , " " , space_5)
which_letter = input("Which letter do you want to choose?")
if letter_one == which_letter:
#this means the player has guessed space 1 correctly.
print("Well done! You have guessed it correctly!")
space_1 = letter_one
elif letter_two == which_letter:
#this means the player has guessed space 2 correctly.
print("Well done! You have guessed it correctly!")
space_2 = letter_two
elif letter_three == which_letter:
#this means the player has guessed space 3 correctly.
print("Well done! You have guessed it correctly!")
space_3 = letter_three
elif letter_four == which_letter:
#this means the player has guessed space 4 correctly.
print("Well done! You have guessed it correctly!")
space_4 = letter_four
elif letter_five == which_letter:
#this means the player has guessed space 5 correctly.
print("Well done! You have guessed it correctly!")
space_5 = letter_five
else:
#this means the player got it wrong.
print("You were wrong...")
lives -= 1
if lives == 0:
print("Game over...")
game_losses += 1
game_times += 1
game = False
continue
else:
print("You now have" , lives , "lives left...")
python beginner python-3.x game hangman
add a comment |Â
up vote
5
down vote
favorite
I am trying to get this code on Python 3.6.3 to be:
More efficient
More readable
More simple
This code is supposed to be like hangman, just without the stickman. I also have added code which will count the amount of times you have won, lost and how many times you have played the game.
(I might put a bit of SQLite into this code so it stores how many points the player has, etc.)
However, the code below is extremely long, and I think that it could be greatly shortened.
Here is my code:
from random import randint as r
game_times = 0
if game_times == 0:
lives = 10
game = True
game_wins = 0
game_losses = 0
points = 0
space_1 = '__'
space_2 = '__'
space_3 = '__'
space_4 = '__'
space_5 = '__'
word_chooser_easy = (r(0, 5))
while game:
#this chooses a random word.
if word_chooser_easy == 0:
hangman_word = 'later'
letter_one = 'l'
letter_two = 'a'
letter_three = 't'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 1:
hangman_word = 'point'
letter_one = 'p'
letter_two = 'o'
letter_three = 'i'
letter_four = 'n'
letter_five = 't'
elif word_chooser_easy == 2:
hangman_word = 'water'
letter_one = 'w'
letter_two = 'a'
letter_three = 't'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 3:
hangman_word = 'joker'
letter_one = 'j'
letter_two = 'o'
letter_three = 'k'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 4:
hangman_word = 'maths'
letter_one = 'm'
letter_two = 'a'
letter_three = 't'
letter_four = 'h'
letter_five = 's'
elif word_chooser_easy == 5:
hangman_word = 'crazy'
letter_one = 'c'
letter_two = 'r'
letter_three = 'a'
letter_four = 'z'
letter_five = 'y'
#now we need to check if the person has won the game.
if space_1 != "__" and space_2 != "__" and space_3 != "__" and space_4 != "__" and space_5 != "__":
#print your congratulations for winning
print("Well done! You have won the game!")
game_times += 1
game_wins += 1
game = False
continue
#print the hangman.
print("This is your hangman:")
print(space_1 , " " , space_2 , " " , space_3 , " " , space_4 , " " , space_5)
which_letter = input("Which letter do you want to choose?")
if letter_one == which_letter:
#this means the player has guessed space 1 correctly.
print("Well done! You have guessed it correctly!")
space_1 = letter_one
elif letter_two == which_letter:
#this means the player has guessed space 2 correctly.
print("Well done! You have guessed it correctly!")
space_2 = letter_two
elif letter_three == which_letter:
#this means the player has guessed space 3 correctly.
print("Well done! You have guessed it correctly!")
space_3 = letter_three
elif letter_four == which_letter:
#this means the player has guessed space 4 correctly.
print("Well done! You have guessed it correctly!")
space_4 = letter_four
elif letter_five == which_letter:
#this means the player has guessed space 5 correctly.
print("Well done! You have guessed it correctly!")
space_5 = letter_five
else:
#this means the player got it wrong.
print("You were wrong...")
lives -= 1
if lives == 0:
print("Game over...")
game_losses += 1
game_times += 1
game = False
continue
else:
print("You now have" , lives , "lives left...")
else:
stats = input("Do you want to see your stats so far? y/n")
if stats == "y":
print("You have lost" , game_losses , "times, you have won" , game_wins , "times and you have played hangman" , game_times , "times.")
else:
pass
print("Your second game will be one that has more double lettered words in it...")
lives = 8
word_chooser_easy = (r(0, 5))
space_1 = '__'
space_2 = '__'
space_3 = '__'
space_4 = '__'
space_5 = '__'
while game:
#this chooses a random word.
if word_chooser_easy == 0:
hangman_word = 'later'
letter_one = 'l'
letter_two = 'a'
letter_three = 't'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 1:
hangman_word = 'point'
letter_one = 'p'
letter_two = 'o'
letter_three = 'i'
letter_four = 'n'
letter_five = 't'
elif word_chooser_easy == 2:
hangman_word = 'water'
letter_one = 'w'
letter_two = 'a'
letter_three = 't'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 3:
hangman_word = 'joker'
letter_one = 'j'
letter_two = 'o'
letter_three = 'k'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 4:
hangman_word = 'maths'
letter_one = 'm'
letter_two = 'a'
letter_three = 't'
letter_four = 'h'
letter_five = 's'
elif word_chooser_easy == 5:
hangman_word = 'crazy'
letter_one = 'c'
letter_two = 'r'
letter_three = 'a'
letter_four = 'z'
letter_five = 'y'
#now we need to check if the person has won the game.
if space_1 != "__" and space_2 != "__" and space_3 != "__" and space_4 != "__" and space_5 != "__":
#print your congratulations for winning
print("Well done! You have won the game!")
game_times += 1
game_wins += 1
game = False
continue
#print the hangman.
print("This is your hangman:")
print(space_1 , " " , space_2 , " " , space_3 , " " , space_4 , " " , space_5)
which_letter = input("Which letter do you want to choose?")
if letter_one == which_letter:
#this means the player has guessed space 1 correctly.
print("Well done! You have guessed it correctly!")
space_1 = letter_one
elif letter_two == which_letter:
#this means the player has guessed space 2 correctly.
print("Well done! You have guessed it correctly!")
space_2 = letter_two
elif letter_three == which_letter:
#this means the player has guessed space 3 correctly.
print("Well done! You have guessed it correctly!")
space_3 = letter_three
elif letter_four == which_letter:
#this means the player has guessed space 4 correctly.
print("Well done! You have guessed it correctly!")
space_4 = letter_four
elif letter_five == which_letter:
#this means the player has guessed space 5 correctly.
print("Well done! You have guessed it correctly!")
space_5 = letter_five
else:
#this means the player got it wrong.
print("You were wrong...")
lives -= 1
if lives == 0:
print("Game over...")
game_losses += 1
game_times += 1
game = False
continue
else:
print("You now have" , lives , "lives left...")
python beginner python-3.x game hangman
You should also add some explanation what this code achieves in the description.
â Graipher
Jan 9 at 12:42
add a comment |Â
up vote
5
down vote
favorite
up vote
5
down vote
favorite
I am trying to get this code on Python 3.6.3 to be:
More efficient
More readable
More simple
This code is supposed to be like hangman, just without the stickman. I also have added code which will count the amount of times you have won, lost and how many times you have played the game.
(I might put a bit of SQLite into this code so it stores how many points the player has, etc.)
However, the code below is extremely long, and I think that it could be greatly shortened.
Here is my code:
from random import randint as r
game_times = 0
if game_times == 0:
lives = 10
game = True
game_wins = 0
game_losses = 0
points = 0
space_1 = '__'
space_2 = '__'
space_3 = '__'
space_4 = '__'
space_5 = '__'
word_chooser_easy = (r(0, 5))
while game:
#this chooses a random word.
if word_chooser_easy == 0:
hangman_word = 'later'
letter_one = 'l'
letter_two = 'a'
letter_three = 't'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 1:
hangman_word = 'point'
letter_one = 'p'
letter_two = 'o'
letter_three = 'i'
letter_four = 'n'
letter_five = 't'
elif word_chooser_easy == 2:
hangman_word = 'water'
letter_one = 'w'
letter_two = 'a'
letter_three = 't'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 3:
hangman_word = 'joker'
letter_one = 'j'
letter_two = 'o'
letter_three = 'k'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 4:
hangman_word = 'maths'
letter_one = 'm'
letter_two = 'a'
letter_three = 't'
letter_four = 'h'
letter_five = 's'
elif word_chooser_easy == 5:
hangman_word = 'crazy'
letter_one = 'c'
letter_two = 'r'
letter_three = 'a'
letter_four = 'z'
letter_five = 'y'
#now we need to check if the person has won the game.
if space_1 != "__" and space_2 != "__" and space_3 != "__" and space_4 != "__" and space_5 != "__":
#print your congratulations for winning
print("Well done! You have won the game!")
game_times += 1
game_wins += 1
game = False
continue
#print the hangman.
print("This is your hangman:")
print(space_1 , " " , space_2 , " " , space_3 , " " , space_4 , " " , space_5)
which_letter = input("Which letter do you want to choose?")
if letter_one == which_letter:
#this means the player has guessed space 1 correctly.
print("Well done! You have guessed it correctly!")
space_1 = letter_one
elif letter_two == which_letter:
#this means the player has guessed space 2 correctly.
print("Well done! You have guessed it correctly!")
space_2 = letter_two
elif letter_three == which_letter:
#this means the player has guessed space 3 correctly.
print("Well done! You have guessed it correctly!")
space_3 = letter_three
elif letter_four == which_letter:
#this means the player has guessed space 4 correctly.
print("Well done! You have guessed it correctly!")
space_4 = letter_four
elif letter_five == which_letter:
#this means the player has guessed space 5 correctly.
print("Well done! You have guessed it correctly!")
space_5 = letter_five
else:
#this means the player got it wrong.
print("You were wrong...")
lives -= 1
if lives == 0:
print("Game over...")
game_losses += 1
game_times += 1
game = False
continue
else:
print("You now have" , lives , "lives left...")
else:
stats = input("Do you want to see your stats so far? y/n")
if stats == "y":
print("You have lost" , game_losses , "times, you have won" , game_wins , "times and you have played hangman" , game_times , "times.")
else:
pass
print("Your second game will be one that has more double lettered words in it...")
lives = 8
word_chooser_easy = (r(0, 5))
space_1 = '__'
space_2 = '__'
space_3 = '__'
space_4 = '__'
space_5 = '__'
while game:
#this chooses a random word.
if word_chooser_easy == 0:
hangman_word = 'later'
letter_one = 'l'
letter_two = 'a'
letter_three = 't'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 1:
hangman_word = 'point'
letter_one = 'p'
letter_two = 'o'
letter_three = 'i'
letter_four = 'n'
letter_five = 't'
elif word_chooser_easy == 2:
hangman_word = 'water'
letter_one = 'w'
letter_two = 'a'
letter_three = 't'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 3:
hangman_word = 'joker'
letter_one = 'j'
letter_two = 'o'
letter_three = 'k'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 4:
hangman_word = 'maths'
letter_one = 'm'
letter_two = 'a'
letter_three = 't'
letter_four = 'h'
letter_five = 's'
elif word_chooser_easy == 5:
hangman_word = 'crazy'
letter_one = 'c'
letter_two = 'r'
letter_three = 'a'
letter_four = 'z'
letter_five = 'y'
#now we need to check if the person has won the game.
if space_1 != "__" and space_2 != "__" and space_3 != "__" and space_4 != "__" and space_5 != "__":
#print your congratulations for winning
print("Well done! You have won the game!")
game_times += 1
game_wins += 1
game = False
continue
#print the hangman.
print("This is your hangman:")
print(space_1 , " " , space_2 , " " , space_3 , " " , space_4 , " " , space_5)
which_letter = input("Which letter do you want to choose?")
if letter_one == which_letter:
#this means the player has guessed space 1 correctly.
print("Well done! You have guessed it correctly!")
space_1 = letter_one
elif letter_two == which_letter:
#this means the player has guessed space 2 correctly.
print("Well done! You have guessed it correctly!")
space_2 = letter_two
elif letter_three == which_letter:
#this means the player has guessed space 3 correctly.
print("Well done! You have guessed it correctly!")
space_3 = letter_three
elif letter_four == which_letter:
#this means the player has guessed space 4 correctly.
print("Well done! You have guessed it correctly!")
space_4 = letter_four
elif letter_five == which_letter:
#this means the player has guessed space 5 correctly.
print("Well done! You have guessed it correctly!")
space_5 = letter_five
else:
#this means the player got it wrong.
print("You were wrong...")
lives -= 1
if lives == 0:
print("Game over...")
game_losses += 1
game_times += 1
game = False
continue
else:
print("You now have" , lives , "lives left...")
python beginner python-3.x game hangman
I am trying to get this code on Python 3.6.3 to be:
More efficient
More readable
More simple
This code is supposed to be like hangman, just without the stickman. I also have added code which will count the amount of times you have won, lost and how many times you have played the game.
(I might put a bit of SQLite into this code so it stores how many points the player has, etc.)
However, the code below is extremely long, and I think that it could be greatly shortened.
Here is my code:
from random import randint as r
game_times = 0
if game_times == 0:
lives = 10
game = True
game_wins = 0
game_losses = 0
points = 0
space_1 = '__'
space_2 = '__'
space_3 = '__'
space_4 = '__'
space_5 = '__'
word_chooser_easy = (r(0, 5))
while game:
#this chooses a random word.
if word_chooser_easy == 0:
hangman_word = 'later'
letter_one = 'l'
letter_two = 'a'
letter_three = 't'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 1:
hangman_word = 'point'
letter_one = 'p'
letter_two = 'o'
letter_three = 'i'
letter_four = 'n'
letter_five = 't'
elif word_chooser_easy == 2:
hangman_word = 'water'
letter_one = 'w'
letter_two = 'a'
letter_three = 't'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 3:
hangman_word = 'joker'
letter_one = 'j'
letter_two = 'o'
letter_three = 'k'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 4:
hangman_word = 'maths'
letter_one = 'm'
letter_two = 'a'
letter_three = 't'
letter_four = 'h'
letter_five = 's'
elif word_chooser_easy == 5:
hangman_word = 'crazy'
letter_one = 'c'
letter_two = 'r'
letter_three = 'a'
letter_four = 'z'
letter_five = 'y'
#now we need to check if the person has won the game.
if space_1 != "__" and space_2 != "__" and space_3 != "__" and space_4 != "__" and space_5 != "__":
#print your congratulations for winning
print("Well done! You have won the game!")
game_times += 1
game_wins += 1
game = False
continue
#print the hangman.
print("This is your hangman:")
print(space_1 , " " , space_2 , " " , space_3 , " " , space_4 , " " , space_5)
which_letter = input("Which letter do you want to choose?")
if letter_one == which_letter:
#this means the player has guessed space 1 correctly.
print("Well done! You have guessed it correctly!")
space_1 = letter_one
elif letter_two == which_letter:
#this means the player has guessed space 2 correctly.
print("Well done! You have guessed it correctly!")
space_2 = letter_two
elif letter_three == which_letter:
#this means the player has guessed space 3 correctly.
print("Well done! You have guessed it correctly!")
space_3 = letter_three
elif letter_four == which_letter:
#this means the player has guessed space 4 correctly.
print("Well done! You have guessed it correctly!")
space_4 = letter_four
elif letter_five == which_letter:
#this means the player has guessed space 5 correctly.
print("Well done! You have guessed it correctly!")
space_5 = letter_five
else:
#this means the player got it wrong.
print("You were wrong...")
lives -= 1
if lives == 0:
print("Game over...")
game_losses += 1
game_times += 1
game = False
continue
else:
print("You now have" , lives , "lives left...")
else:
stats = input("Do you want to see your stats so far? y/n")
if stats == "y":
print("You have lost" , game_losses , "times, you have won" , game_wins , "times and you have played hangman" , game_times , "times.")
else:
pass
print("Your second game will be one that has more double lettered words in it...")
lives = 8
word_chooser_easy = (r(0, 5))
space_1 = '__'
space_2 = '__'
space_3 = '__'
space_4 = '__'
space_5 = '__'
while game:
#this chooses a random word.
if word_chooser_easy == 0:
hangman_word = 'later'
letter_one = 'l'
letter_two = 'a'
letter_three = 't'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 1:
hangman_word = 'point'
letter_one = 'p'
letter_two = 'o'
letter_three = 'i'
letter_four = 'n'
letter_five = 't'
elif word_chooser_easy == 2:
hangman_word = 'water'
letter_one = 'w'
letter_two = 'a'
letter_three = 't'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 3:
hangman_word = 'joker'
letter_one = 'j'
letter_two = 'o'
letter_three = 'k'
letter_four = 'e'
letter_five = 'r'
elif word_chooser_easy == 4:
hangman_word = 'maths'
letter_one = 'm'
letter_two = 'a'
letter_three = 't'
letter_four = 'h'
letter_five = 's'
elif word_chooser_easy == 5:
hangman_word = 'crazy'
letter_one = 'c'
letter_two = 'r'
letter_three = 'a'
letter_four = 'z'
letter_five = 'y'
#now we need to check if the person has won the game.
if space_1 != "__" and space_2 != "__" and space_3 != "__" and space_4 != "__" and space_5 != "__":
#print your congratulations for winning
print("Well done! You have won the game!")
game_times += 1
game_wins += 1
game = False
continue
#print the hangman.
print("This is your hangman:")
print(space_1 , " " , space_2 , " " , space_3 , " " , space_4 , " " , space_5)
which_letter = input("Which letter do you want to choose?")
if letter_one == which_letter:
#this means the player has guessed space 1 correctly.
print("Well done! You have guessed it correctly!")
space_1 = letter_one
elif letter_two == which_letter:
#this means the player has guessed space 2 correctly.
print("Well done! You have guessed it correctly!")
space_2 = letter_two
elif letter_three == which_letter:
#this means the player has guessed space 3 correctly.
print("Well done! You have guessed it correctly!")
space_3 = letter_three
elif letter_four == which_letter:
#this means the player has guessed space 4 correctly.
print("Well done! You have guessed it correctly!")
space_4 = letter_four
elif letter_five == which_letter:
#this means the player has guessed space 5 correctly.
print("Well done! You have guessed it correctly!")
space_5 = letter_five
else:
#this means the player got it wrong.
print("You were wrong...")
lives -= 1
if lives == 0:
print("Game over...")
game_losses += 1
game_times += 1
game = False
continue
else:
print("You now have" , lives , "lives left...")
python beginner python-3.x game hangman
edited Jan 9 at 16:48
Sam Onela
5,88461545
5,88461545
asked Jan 9 at 9:11
A...................
8212
8212
You should also add some explanation what this code achieves in the description.
â Graipher
Jan 9 at 12:42
add a comment |Â
You should also add some explanation what this code achieves in the description.
â Graipher
Jan 9 at 12:42
You should also add some explanation what this code achieves in the description.
â Graipher
Jan 9 at 12:42
You should also add some explanation what this code achieves in the description.
â Graipher
Jan 9 at 12:42
add a comment |Â
2 Answers
2
active
oldest
votes
up vote
6
down vote
accepted
Well done
There are some obvious beginner mistakes, but you have created a working game.
Avoid working in the global namespace
game_times = 0
if game_times == 0:
lives = 10
game = True
game_wins = 0
game_losses = 0
points = 0
- These should not be global, but be part of a setup function
- There are 0! functions in your code. The code could improve a lot, simply by splitting your code into functions
- Since these are currently globals, they should be written with
ALL_CAPS
DRY:
Don't repeat yourself
You do this quite alot, for instance:
space_1 = '__'
...
- Those spaces are all the same, a single
space_char = '__'would suffice
word_chooser_easy = (r(0, 5))
if word_chooser_easy == 0:
word = "later"
...
choiceis more python thenrandInt- Don't import like
import random as r, but import what you needfrom random import choice
With random.choice you can quite literally choose a random item from a list
>>> from random import choice
>>> words = ["word_1", "word_2"]
>>> random_choice = choice(words)
letter_one = 'c'
letter_two = 'r'
letter_three = 'a'
letter_four = 'z'
letter_five = 'y'
...
if letter_one == which_letter:
#this means the player has guessed space 1 correctly.
print("Well done! You have guessed it correctly!")
space_1 = letter_one
- in Python almost anything is iterable.
This could be solved in different ways.
>>> string = "word"
# String are iterable
>>> print(string[0])
w
# However not assignable
>>> string[0] = "k"
TypeError: 'str' object does not support item assignment
# Lastly you can check if a char is in a string with the in keyword
>>> print("w" in string)
True
You could save the currently_guessed word in a list to make it more mutable
- You can first fill the
current_guesslist withSPACEchars, that will work as non guessed. - If the user input letter is in the word to guess. You can loop over the string with
enumerate()and fill the place in the list where letter matches. - As a return you can check if they are all filled(not
SPACEchars) nicely with theall()keyword
Miscellaneous
- Use a guard for all your scripts
- Use
format()orf""over print concat - If you ever start writing functions, don't forget writing docstrings ;)
Simplified code
from random import choice
WORDS = ["real", "checkers", "cheese", "baboon"]
SPACE = '_'
def hangman(correct_word=None, lives=10):
"""Simple hangman game.
Keyword arguments:
correct_word -- the word to guess (default: a random word from WORDS)
lives -- the amount of lives (default: 10)
Returns:
True: if the word was guessed
False: if out of lives"""
if correct_word is None:
correct_word = choice(WORDS)
current_guess = [SPACE for _ in correct_word]
while True:
print("You have lives left".format(lives))
print(' '.join(current_guess))
letter = input("Pick a letter: ")
if letter in correct_word:
for idx, char in enumerate(correct_word):
if char == letter:
current_guess[idx] = letter
else:
lives -= 1
if all(char != SPACE for char in current_guess):
return True
if lives < 0:
return False
if __name__ == '__main__':
if hangman():
print("You won")
else:
print("Out of lives")
# or after @Graiphers suggestion you can play the game with a predefined word or lives
# hangman("randomword", 5)
1
Nice clean up of OP's code. Two comments: I would be explicit andimport randomand later dorandom.choice(it is more obvious what is happening IMO). And I would make the word to guess an argument ofgameand only choose it in the guard clause. This allows playing the game with any word.
â Graipher
Jan 9 at 15:22
I've edited your second suggestion, however my preference goes toofrom x import yespecially with small snippets of code, to lessen the import load
â Ludisposed
Jan 9 at 15:42
Fair enough. There is always a trade-off involved. ForrandomI usually prefer the explicit call, personally, but YMMV.
â Graipher
Jan 9 at 16:36
add a comment |Â
up vote
2
down vote
I am not experienced with python, sorry for that, but you will understand my pseudo-code:
Instead of having 6 if conditional blocks, have an array of 6 words:
var Words = ["later", "point", "water", "joker", "maths", "crazy"]
then you make a random number from 0 to 5 and use that to select from the array of words:
var random = (r(0, 5));
hangman_word = Words[random];
Now for the letters: instead of having 6 variables for each letter, don't have it at all. You have the variable hangman_word. :)
But what about spaces? Just create a new string that has same length as the chosen word. Something like that:
var spaces = "";
for(int i=0; i<hangman_word.length; i++)
spaces += "-";
for checking if letter chosen by user is in the word just do:
which_letter = input("Which letter do you want to choose?");
boolean found = false;
for(int i=0; i<hangman_word.length; i++)
if(hangman_word[i] == which_letter)
//EG: so from "-----", it will eventually go to "J-KE--", and "JOKER"
spaces[i] = which_letter;
found = true; // dont forget that we found it :)
//if we didn't find it, well we didn't find it.
if(found == false)
"no such letter in word, sorry";
else
"you have guessed it!"
These are just some basic ideas. After you will understand and do all this, your code will become more flexible. I'd recommend you to rewrite your game, considering that now you have more experience.
PS: also same logic will easily apply for next level of game etc.
EDIT:
I wrote this on c++. This is best I can do :d
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
string Words[6] = "later", "pointeryeah", "water", "joker", "maths", "crazy";
int main()
int random_index;
int lives = 6, guesses = 0;
char guess_letter;
bool won = false;
srand (time(NULL));
random_index = rand() % 5;
string chosen_word = Words[random_index];
string spaces = "";
for(int i=0; i<chosen_word.length(); i++)
spaces += "-";
while(lives>0 && !won)
cout<<"This is your word: "<<spaces<<" Try to guess!"<<endl;
cin>>guess_letter;
bool found = false;
for(int i=0; i<chosen_word.length(); i++)
if(chosen_word[i] == guess_letter)
spaces[i] = guess_letter;
found = true;
if(!found)
cout<<"You didn't guess. ";
lives--;
else
cout<<"GJ you guessed! ";
guesses++;
if(guesses == chosen_word.length())
won = true;
if(won)
cout<<"you won!";
else
cout<<"you lost!";
return 0;
1
Before you downvote, please consider commenting reason too.
â Nick
Jan 10 at 5:56
add a comment |Â
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
6
down vote
accepted
Well done
There are some obvious beginner mistakes, but you have created a working game.
Avoid working in the global namespace
game_times = 0
if game_times == 0:
lives = 10
game = True
game_wins = 0
game_losses = 0
points = 0
- These should not be global, but be part of a setup function
- There are 0! functions in your code. The code could improve a lot, simply by splitting your code into functions
- Since these are currently globals, they should be written with
ALL_CAPS
DRY:
Don't repeat yourself
You do this quite alot, for instance:
space_1 = '__'
...
- Those spaces are all the same, a single
space_char = '__'would suffice
word_chooser_easy = (r(0, 5))
if word_chooser_easy == 0:
word = "later"
...
choiceis more python thenrandInt- Don't import like
import random as r, but import what you needfrom random import choice
With random.choice you can quite literally choose a random item from a list
>>> from random import choice
>>> words = ["word_1", "word_2"]
>>> random_choice = choice(words)
letter_one = 'c'
letter_two = 'r'
letter_three = 'a'
letter_four = 'z'
letter_five = 'y'
...
if letter_one == which_letter:
#this means the player has guessed space 1 correctly.
print("Well done! You have guessed it correctly!")
space_1 = letter_one
- in Python almost anything is iterable.
This could be solved in different ways.
>>> string = "word"
# String are iterable
>>> print(string[0])
w
# However not assignable
>>> string[0] = "k"
TypeError: 'str' object does not support item assignment
# Lastly you can check if a char is in a string with the in keyword
>>> print("w" in string)
True
You could save the currently_guessed word in a list to make it more mutable
- You can first fill the
current_guesslist withSPACEchars, that will work as non guessed. - If the user input letter is in the word to guess. You can loop over the string with
enumerate()and fill the place in the list where letter matches. - As a return you can check if they are all filled(not
SPACEchars) nicely with theall()keyword
Miscellaneous
- Use a guard for all your scripts
- Use
format()orf""over print concat - If you ever start writing functions, don't forget writing docstrings ;)
Simplified code
from random import choice
WORDS = ["real", "checkers", "cheese", "baboon"]
SPACE = '_'
def hangman(correct_word=None, lives=10):
"""Simple hangman game.
Keyword arguments:
correct_word -- the word to guess (default: a random word from WORDS)
lives -- the amount of lives (default: 10)
Returns:
True: if the word was guessed
False: if out of lives"""
if correct_word is None:
correct_word = choice(WORDS)
current_guess = [SPACE for _ in correct_word]
while True:
print("You have lives left".format(lives))
print(' '.join(current_guess))
letter = input("Pick a letter: ")
if letter in correct_word:
for idx, char in enumerate(correct_word):
if char == letter:
current_guess[idx] = letter
else:
lives -= 1
if all(char != SPACE for char in current_guess):
return True
if lives < 0:
return False
if __name__ == '__main__':
if hangman():
print("You won")
else:
print("Out of lives")
# or after @Graiphers suggestion you can play the game with a predefined word or lives
# hangman("randomword", 5)
1
Nice clean up of OP's code. Two comments: I would be explicit andimport randomand later dorandom.choice(it is more obvious what is happening IMO). And I would make the word to guess an argument ofgameand only choose it in the guard clause. This allows playing the game with any word.
â Graipher
Jan 9 at 15:22
I've edited your second suggestion, however my preference goes toofrom x import yespecially with small snippets of code, to lessen the import load
â Ludisposed
Jan 9 at 15:42
Fair enough. There is always a trade-off involved. ForrandomI usually prefer the explicit call, personally, but YMMV.
â Graipher
Jan 9 at 16:36
add a comment |Â
up vote
6
down vote
accepted
Well done
There are some obvious beginner mistakes, but you have created a working game.
Avoid working in the global namespace
game_times = 0
if game_times == 0:
lives = 10
game = True
game_wins = 0
game_losses = 0
points = 0
- These should not be global, but be part of a setup function
- There are 0! functions in your code. The code could improve a lot, simply by splitting your code into functions
- Since these are currently globals, they should be written with
ALL_CAPS
DRY:
Don't repeat yourself
You do this quite alot, for instance:
space_1 = '__'
...
- Those spaces are all the same, a single
space_char = '__'would suffice
word_chooser_easy = (r(0, 5))
if word_chooser_easy == 0:
word = "later"
...
choiceis more python thenrandInt- Don't import like
import random as r, but import what you needfrom random import choice
With random.choice you can quite literally choose a random item from a list
>>> from random import choice
>>> words = ["word_1", "word_2"]
>>> random_choice = choice(words)
letter_one = 'c'
letter_two = 'r'
letter_three = 'a'
letter_four = 'z'
letter_five = 'y'
...
if letter_one == which_letter:
#this means the player has guessed space 1 correctly.
print("Well done! You have guessed it correctly!")
space_1 = letter_one
- in Python almost anything is iterable.
This could be solved in different ways.
>>> string = "word"
# String are iterable
>>> print(string[0])
w
# However not assignable
>>> string[0] = "k"
TypeError: 'str' object does not support item assignment
# Lastly you can check if a char is in a string with the in keyword
>>> print("w" in string)
True
You could save the currently_guessed word in a list to make it more mutable
- You can first fill the
current_guesslist withSPACEchars, that will work as non guessed. - If the user input letter is in the word to guess. You can loop over the string with
enumerate()and fill the place in the list where letter matches. - As a return you can check if they are all filled(not
SPACEchars) nicely with theall()keyword
Miscellaneous
- Use a guard for all your scripts
- Use
format()orf""over print concat - If you ever start writing functions, don't forget writing docstrings ;)
Simplified code
from random import choice
WORDS = ["real", "checkers", "cheese", "baboon"]
SPACE = '_'
def hangman(correct_word=None, lives=10):
"""Simple hangman game.
Keyword arguments:
correct_word -- the word to guess (default: a random word from WORDS)
lives -- the amount of lives (default: 10)
Returns:
True: if the word was guessed
False: if out of lives"""
if correct_word is None:
correct_word = choice(WORDS)
current_guess = [SPACE for _ in correct_word]
while True:
print("You have lives left".format(lives))
print(' '.join(current_guess))
letter = input("Pick a letter: ")
if letter in correct_word:
for idx, char in enumerate(correct_word):
if char == letter:
current_guess[idx] = letter
else:
lives -= 1
if all(char != SPACE for char in current_guess):
return True
if lives < 0:
return False
if __name__ == '__main__':
if hangman():
print("You won")
else:
print("Out of lives")
# or after @Graiphers suggestion you can play the game with a predefined word or lives
# hangman("randomword", 5)
1
Nice clean up of OP's code. Two comments: I would be explicit andimport randomand later dorandom.choice(it is more obvious what is happening IMO). And I would make the word to guess an argument ofgameand only choose it in the guard clause. This allows playing the game with any word.
â Graipher
Jan 9 at 15:22
I've edited your second suggestion, however my preference goes toofrom x import yespecially with small snippets of code, to lessen the import load
â Ludisposed
Jan 9 at 15:42
Fair enough. There is always a trade-off involved. ForrandomI usually prefer the explicit call, personally, but YMMV.
â Graipher
Jan 9 at 16:36
add a comment |Â
up vote
6
down vote
accepted
up vote
6
down vote
accepted
Well done
There are some obvious beginner mistakes, but you have created a working game.
Avoid working in the global namespace
game_times = 0
if game_times == 0:
lives = 10
game = True
game_wins = 0
game_losses = 0
points = 0
- These should not be global, but be part of a setup function
- There are 0! functions in your code. The code could improve a lot, simply by splitting your code into functions
- Since these are currently globals, they should be written with
ALL_CAPS
DRY:
Don't repeat yourself
You do this quite alot, for instance:
space_1 = '__'
...
- Those spaces are all the same, a single
space_char = '__'would suffice
word_chooser_easy = (r(0, 5))
if word_chooser_easy == 0:
word = "later"
...
choiceis more python thenrandInt- Don't import like
import random as r, but import what you needfrom random import choice
With random.choice you can quite literally choose a random item from a list
>>> from random import choice
>>> words = ["word_1", "word_2"]
>>> random_choice = choice(words)
letter_one = 'c'
letter_two = 'r'
letter_three = 'a'
letter_four = 'z'
letter_five = 'y'
...
if letter_one == which_letter:
#this means the player has guessed space 1 correctly.
print("Well done! You have guessed it correctly!")
space_1 = letter_one
- in Python almost anything is iterable.
This could be solved in different ways.
>>> string = "word"
# String are iterable
>>> print(string[0])
w
# However not assignable
>>> string[0] = "k"
TypeError: 'str' object does not support item assignment
# Lastly you can check if a char is in a string with the in keyword
>>> print("w" in string)
True
You could save the currently_guessed word in a list to make it more mutable
- You can first fill the
current_guesslist withSPACEchars, that will work as non guessed. - If the user input letter is in the word to guess. You can loop over the string with
enumerate()and fill the place in the list where letter matches. - As a return you can check if they are all filled(not
SPACEchars) nicely with theall()keyword
Miscellaneous
- Use a guard for all your scripts
- Use
format()orf""over print concat - If you ever start writing functions, don't forget writing docstrings ;)
Simplified code
from random import choice
WORDS = ["real", "checkers", "cheese", "baboon"]
SPACE = '_'
def hangman(correct_word=None, lives=10):
"""Simple hangman game.
Keyword arguments:
correct_word -- the word to guess (default: a random word from WORDS)
lives -- the amount of lives (default: 10)
Returns:
True: if the word was guessed
False: if out of lives"""
if correct_word is None:
correct_word = choice(WORDS)
current_guess = [SPACE for _ in correct_word]
while True:
print("You have lives left".format(lives))
print(' '.join(current_guess))
letter = input("Pick a letter: ")
if letter in correct_word:
for idx, char in enumerate(correct_word):
if char == letter:
current_guess[idx] = letter
else:
lives -= 1
if all(char != SPACE for char in current_guess):
return True
if lives < 0:
return False
if __name__ == '__main__':
if hangman():
print("You won")
else:
print("Out of lives")
# or after @Graiphers suggestion you can play the game with a predefined word or lives
# hangman("randomword", 5)
Well done
There are some obvious beginner mistakes, but you have created a working game.
Avoid working in the global namespace
game_times = 0
if game_times == 0:
lives = 10
game = True
game_wins = 0
game_losses = 0
points = 0
- These should not be global, but be part of a setup function
- There are 0! functions in your code. The code could improve a lot, simply by splitting your code into functions
- Since these are currently globals, they should be written with
ALL_CAPS
DRY:
Don't repeat yourself
You do this quite alot, for instance:
space_1 = '__'
...
- Those spaces are all the same, a single
space_char = '__'would suffice
word_chooser_easy = (r(0, 5))
if word_chooser_easy == 0:
word = "later"
...
choiceis more python thenrandInt- Don't import like
import random as r, but import what you needfrom random import choice
With random.choice you can quite literally choose a random item from a list
>>> from random import choice
>>> words = ["word_1", "word_2"]
>>> random_choice = choice(words)
letter_one = 'c'
letter_two = 'r'
letter_three = 'a'
letter_four = 'z'
letter_five = 'y'
...
if letter_one == which_letter:
#this means the player has guessed space 1 correctly.
print("Well done! You have guessed it correctly!")
space_1 = letter_one
- in Python almost anything is iterable.
This could be solved in different ways.
>>> string = "word"
# String are iterable
>>> print(string[0])
w
# However not assignable
>>> string[0] = "k"
TypeError: 'str' object does not support item assignment
# Lastly you can check if a char is in a string with the in keyword
>>> print("w" in string)
True
You could save the currently_guessed word in a list to make it more mutable
- You can first fill the
current_guesslist withSPACEchars, that will work as non guessed. - If the user input letter is in the word to guess. You can loop over the string with
enumerate()and fill the place in the list where letter matches. - As a return you can check if they are all filled(not
SPACEchars) nicely with theall()keyword
Miscellaneous
- Use a guard for all your scripts
- Use
format()orf""over print concat - If you ever start writing functions, don't forget writing docstrings ;)
Simplified code
from random import choice
WORDS = ["real", "checkers", "cheese", "baboon"]
SPACE = '_'
def hangman(correct_word=None, lives=10):
"""Simple hangman game.
Keyword arguments:
correct_word -- the word to guess (default: a random word from WORDS)
lives -- the amount of lives (default: 10)
Returns:
True: if the word was guessed
False: if out of lives"""
if correct_word is None:
correct_word = choice(WORDS)
current_guess = [SPACE for _ in correct_word]
while True:
print("You have lives left".format(lives))
print(' '.join(current_guess))
letter = input("Pick a letter: ")
if letter in correct_word:
for idx, char in enumerate(correct_word):
if char == letter:
current_guess[idx] = letter
else:
lives -= 1
if all(char != SPACE for char in current_guess):
return True
if lives < 0:
return False
if __name__ == '__main__':
if hangman():
print("You won")
else:
print("Out of lives")
# or after @Graiphers suggestion you can play the game with a predefined word or lives
# hangman("randomword", 5)
edited Jan 9 at 16:43
answered Jan 9 at 14:35
Ludisposed
5,79821758
5,79821758
1
Nice clean up of OP's code. Two comments: I would be explicit andimport randomand later dorandom.choice(it is more obvious what is happening IMO). And I would make the word to guess an argument ofgameand only choose it in the guard clause. This allows playing the game with any word.
â Graipher
Jan 9 at 15:22
I've edited your second suggestion, however my preference goes toofrom x import yespecially with small snippets of code, to lessen the import load
â Ludisposed
Jan 9 at 15:42
Fair enough. There is always a trade-off involved. ForrandomI usually prefer the explicit call, personally, but YMMV.
â Graipher
Jan 9 at 16:36
add a comment |Â
1
Nice clean up of OP's code. Two comments: I would be explicit andimport randomand later dorandom.choice(it is more obvious what is happening IMO). And I would make the word to guess an argument ofgameand only choose it in the guard clause. This allows playing the game with any word.
â Graipher
Jan 9 at 15:22
I've edited your second suggestion, however my preference goes toofrom x import yespecially with small snippets of code, to lessen the import load
â Ludisposed
Jan 9 at 15:42
Fair enough. There is always a trade-off involved. ForrandomI usually prefer the explicit call, personally, but YMMV.
â Graipher
Jan 9 at 16:36
1
1
Nice clean up of OP's code. Two comments: I would be explicit and
import random and later do random.choice (it is more obvious what is happening IMO). And I would make the word to guess an argument of game and only choose it in the guard clause. This allows playing the game with any word.â Graipher
Jan 9 at 15:22
Nice clean up of OP's code. Two comments: I would be explicit and
import random and later do random.choice (it is more obvious what is happening IMO). And I would make the word to guess an argument of game and only choose it in the guard clause. This allows playing the game with any word.â Graipher
Jan 9 at 15:22
I've edited your second suggestion, however my preference goes too
from x import y especially with small snippets of code, to lessen the import loadâ Ludisposed
Jan 9 at 15:42
I've edited your second suggestion, however my preference goes too
from x import y especially with small snippets of code, to lessen the import loadâ Ludisposed
Jan 9 at 15:42
Fair enough. There is always a trade-off involved. For
random I usually prefer the explicit call, personally, but YMMV.â Graipher
Jan 9 at 16:36
Fair enough. There is always a trade-off involved. For
random I usually prefer the explicit call, personally, but YMMV.â Graipher
Jan 9 at 16:36
add a comment |Â
up vote
2
down vote
I am not experienced with python, sorry for that, but you will understand my pseudo-code:
Instead of having 6 if conditional blocks, have an array of 6 words:
var Words = ["later", "point", "water", "joker", "maths", "crazy"]
then you make a random number from 0 to 5 and use that to select from the array of words:
var random = (r(0, 5));
hangman_word = Words[random];
Now for the letters: instead of having 6 variables for each letter, don't have it at all. You have the variable hangman_word. :)
But what about spaces? Just create a new string that has same length as the chosen word. Something like that:
var spaces = "";
for(int i=0; i<hangman_word.length; i++)
spaces += "-";
for checking if letter chosen by user is in the word just do:
which_letter = input("Which letter do you want to choose?");
boolean found = false;
for(int i=0; i<hangman_word.length; i++)
if(hangman_word[i] == which_letter)
//EG: so from "-----", it will eventually go to "J-KE--", and "JOKER"
spaces[i] = which_letter;
found = true; // dont forget that we found it :)
//if we didn't find it, well we didn't find it.
if(found == false)
"no such letter in word, sorry";
else
"you have guessed it!"
These are just some basic ideas. After you will understand and do all this, your code will become more flexible. I'd recommend you to rewrite your game, considering that now you have more experience.
PS: also same logic will easily apply for next level of game etc.
EDIT:
I wrote this on c++. This is best I can do :d
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
string Words[6] = "later", "pointeryeah", "water", "joker", "maths", "crazy";
int main()
int random_index;
int lives = 6, guesses = 0;
char guess_letter;
bool won = false;
srand (time(NULL));
random_index = rand() % 5;
string chosen_word = Words[random_index];
string spaces = "";
for(int i=0; i<chosen_word.length(); i++)
spaces += "-";
while(lives>0 && !won)
cout<<"This is your word: "<<spaces<<" Try to guess!"<<endl;
cin>>guess_letter;
bool found = false;
for(int i=0; i<chosen_word.length(); i++)
if(chosen_word[i] == guess_letter)
spaces[i] = guess_letter;
found = true;
if(!found)
cout<<"You didn't guess. ";
lives--;
else
cout<<"GJ you guessed! ";
guesses++;
if(guesses == chosen_word.length())
won = true;
if(won)
cout<<"you won!";
else
cout<<"you lost!";
return 0;
1
Before you downvote, please consider commenting reason too.
â Nick
Jan 10 at 5:56
add a comment |Â
up vote
2
down vote
I am not experienced with python, sorry for that, but you will understand my pseudo-code:
Instead of having 6 if conditional blocks, have an array of 6 words:
var Words = ["later", "point", "water", "joker", "maths", "crazy"]
then you make a random number from 0 to 5 and use that to select from the array of words:
var random = (r(0, 5));
hangman_word = Words[random];
Now for the letters: instead of having 6 variables for each letter, don't have it at all. You have the variable hangman_word. :)
But what about spaces? Just create a new string that has same length as the chosen word. Something like that:
var spaces = "";
for(int i=0; i<hangman_word.length; i++)
spaces += "-";
for checking if letter chosen by user is in the word just do:
which_letter = input("Which letter do you want to choose?");
boolean found = false;
for(int i=0; i<hangman_word.length; i++)
if(hangman_word[i] == which_letter)
//EG: so from "-----", it will eventually go to "J-KE--", and "JOKER"
spaces[i] = which_letter;
found = true; // dont forget that we found it :)
//if we didn't find it, well we didn't find it.
if(found == false)
"no such letter in word, sorry";
else
"you have guessed it!"
These are just some basic ideas. After you will understand and do all this, your code will become more flexible. I'd recommend you to rewrite your game, considering that now you have more experience.
PS: also same logic will easily apply for next level of game etc.
EDIT:
I wrote this on c++. This is best I can do :d
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
string Words[6] = "later", "pointeryeah", "water", "joker", "maths", "crazy";
int main()
int random_index;
int lives = 6, guesses = 0;
char guess_letter;
bool won = false;
srand (time(NULL));
random_index = rand() % 5;
string chosen_word = Words[random_index];
string spaces = "";
for(int i=0; i<chosen_word.length(); i++)
spaces += "-";
while(lives>0 && !won)
cout<<"This is your word: "<<spaces<<" Try to guess!"<<endl;
cin>>guess_letter;
bool found = false;
for(int i=0; i<chosen_word.length(); i++)
if(chosen_word[i] == guess_letter)
spaces[i] = guess_letter;
found = true;
if(!found)
cout<<"You didn't guess. ";
lives--;
else
cout<<"GJ you guessed! ";
guesses++;
if(guesses == chosen_word.length())
won = true;
if(won)
cout<<"you won!";
else
cout<<"you lost!";
return 0;
1
Before you downvote, please consider commenting reason too.
â Nick
Jan 10 at 5:56
add a comment |Â
up vote
2
down vote
up vote
2
down vote
I am not experienced with python, sorry for that, but you will understand my pseudo-code:
Instead of having 6 if conditional blocks, have an array of 6 words:
var Words = ["later", "point", "water", "joker", "maths", "crazy"]
then you make a random number from 0 to 5 and use that to select from the array of words:
var random = (r(0, 5));
hangman_word = Words[random];
Now for the letters: instead of having 6 variables for each letter, don't have it at all. You have the variable hangman_word. :)
But what about spaces? Just create a new string that has same length as the chosen word. Something like that:
var spaces = "";
for(int i=0; i<hangman_word.length; i++)
spaces += "-";
for checking if letter chosen by user is in the word just do:
which_letter = input("Which letter do you want to choose?");
boolean found = false;
for(int i=0; i<hangman_word.length; i++)
if(hangman_word[i] == which_letter)
//EG: so from "-----", it will eventually go to "J-KE--", and "JOKER"
spaces[i] = which_letter;
found = true; // dont forget that we found it :)
//if we didn't find it, well we didn't find it.
if(found == false)
"no such letter in word, sorry";
else
"you have guessed it!"
These are just some basic ideas. After you will understand and do all this, your code will become more flexible. I'd recommend you to rewrite your game, considering that now you have more experience.
PS: also same logic will easily apply for next level of game etc.
EDIT:
I wrote this on c++. This is best I can do :d
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
string Words[6] = "later", "pointeryeah", "water", "joker", "maths", "crazy";
int main()
int random_index;
int lives = 6, guesses = 0;
char guess_letter;
bool won = false;
srand (time(NULL));
random_index = rand() % 5;
string chosen_word = Words[random_index];
string spaces = "";
for(int i=0; i<chosen_word.length(); i++)
spaces += "-";
while(lives>0 && !won)
cout<<"This is your word: "<<spaces<<" Try to guess!"<<endl;
cin>>guess_letter;
bool found = false;
for(int i=0; i<chosen_word.length(); i++)
if(chosen_word[i] == guess_letter)
spaces[i] = guess_letter;
found = true;
if(!found)
cout<<"You didn't guess. ";
lives--;
else
cout<<"GJ you guessed! ";
guesses++;
if(guesses == chosen_word.length())
won = true;
if(won)
cout<<"you won!";
else
cout<<"you lost!";
return 0;
I am not experienced with python, sorry for that, but you will understand my pseudo-code:
Instead of having 6 if conditional blocks, have an array of 6 words:
var Words = ["later", "point", "water", "joker", "maths", "crazy"]
then you make a random number from 0 to 5 and use that to select from the array of words:
var random = (r(0, 5));
hangman_word = Words[random];
Now for the letters: instead of having 6 variables for each letter, don't have it at all. You have the variable hangman_word. :)
But what about spaces? Just create a new string that has same length as the chosen word. Something like that:
var spaces = "";
for(int i=0; i<hangman_word.length; i++)
spaces += "-";
for checking if letter chosen by user is in the word just do:
which_letter = input("Which letter do you want to choose?");
boolean found = false;
for(int i=0; i<hangman_word.length; i++)
if(hangman_word[i] == which_letter)
//EG: so from "-----", it will eventually go to "J-KE--", and "JOKER"
spaces[i] = which_letter;
found = true; // dont forget that we found it :)
//if we didn't find it, well we didn't find it.
if(found == false)
"no such letter in word, sorry";
else
"you have guessed it!"
These are just some basic ideas. After you will understand and do all this, your code will become more flexible. I'd recommend you to rewrite your game, considering that now you have more experience.
PS: also same logic will easily apply for next level of game etc.
EDIT:
I wrote this on c++. This is best I can do :d
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
string Words[6] = "later", "pointeryeah", "water", "joker", "maths", "crazy";
int main()
int random_index;
int lives = 6, guesses = 0;
char guess_letter;
bool won = false;
srand (time(NULL));
random_index = rand() % 5;
string chosen_word = Words[random_index];
string spaces = "";
for(int i=0; i<chosen_word.length(); i++)
spaces += "-";
while(lives>0 && !won)
cout<<"This is your word: "<<spaces<<" Try to guess!"<<endl;
cin>>guess_letter;
bool found = false;
for(int i=0; i<chosen_word.length(); i++)
if(chosen_word[i] == guess_letter)
spaces[i] = guess_letter;
found = true;
if(!found)
cout<<"You didn't guess. ";
lives--;
else
cout<<"GJ you guessed! ";
guesses++;
if(guesses == chosen_word.length())
won = true;
if(won)
cout<<"you won!";
else
cout<<"you lost!";
return 0;
edited Jan 9 at 16:46
Sam Onela
5,88461545
5,88461545
answered Jan 9 at 9:45
Nick
285
285
1
Before you downvote, please consider commenting reason too.
â Nick
Jan 10 at 5:56
add a comment |Â
1
Before you downvote, please consider commenting reason too.
â Nick
Jan 10 at 5:56
1
1
Before you downvote, please consider commenting reason too.
â Nick
Jan 10 at 5:56
Before you downvote, please consider commenting reason too.
â Nick
Jan 10 at 5:56
add a comment |Â
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f184639%2fsimple-game-of-hangman-which-counts-wins-and-losses%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
You should also add some explanation what this code achieves in the description.
â Graipher
Jan 9 at 12:42