Advertisement

Python Project With Source Code - Terminal-Based Hangman Game

Python Project With Source Code - Terminal-Based Hangman Game


Terminal-based hangman game

This project contains a simple python script to play terminal-based hangman

game.

Prerequisites

None

How to run the script

- Run the hangman.py script.

- Start to guess the word.

Source Code:

import random

from json import load

# function to randomly get one word from words.py and convert the word to

uppercase

def get_word():

with open('words.json') as json_file:

data = load(json_file)

wordArray = data["word_list"]

word = random.choice(wordArray)

word = word.upper()

return word

# function to play the game

def play(word):

# intialise variable

word_completion = "_" * len(word) # generate a line to show the number

of word

guessed = False # indicate the status of guess

guessed_letters = [] # store guessed letters

guessed_words = [] # store guessed words

tries = 6 # user have 6 times of wrong

# display message and the format of the hangman

print("Let's play Hangman!")

print(display_hangman(tries))

print(word_completion)

print("\n")

print("Length of the word: ", len(word))

print("\n")

# user can keep guessing when the tries is more than 0 and the answer is

not found yet.

while not guessed and tries > 0:

# Display message and ask for user input and convert it into uppercase

guess = input("Please guess a letter or the word: ").upper()

# check the length of the user input and is it alpha or not

if len(guess) == 1 and guess.isalpha():

# display message when user guess the same letter twice

if guess in guessed_letters:

print("You already guessed the letter", guess)

# display message and deduct the tries when user guess the wrong

letter

elif guess not in word:

print(guess, "is not in the word.")

tries -= 1

guessed_letters.append(guess)

# dispay message and store the letter when the user guess the correct

letter

else:

print("Good job,", guess, "is in the word!")

guessed_letters.append(guess)

word_as_list = list(word_completion)

indices = [i for i, letter in enumerate(word) if letter == guess]

for index in indices:

word_as_list[index] = guess

# join the guess word in the word_completion

word_completion = "".join(word_as_list)

# if there is not blank space in word_completion change the status

of guess to true

if "_" not in word_completion:

guessed = True

# check the length of the user input and is it alpha or not

elif len(guess) == len(word) and guess.isalpha():

# display message when user guess the same letter twice

if guess in guessed_words:

print("You already guessed the word", guess)

# display message and deduct the tries when user guess the wrong

letter

elif guess != word:

print(guess, "is not the word.")

tries -= 1

guessed_words.append(guess)

# change the status of guess

else:

guessed = True

word_completion = word

# display error message for user

else:

print("Not a valid guess.")

# display the format of hangman each time of guess

print(display_hangman(tries))

print(word_completion)

print("\n")

print("Length of the word: ", len(word))

print("\n")

# if the variable of guess is true means user win the game

if guessed:

print("Congrats, you guessed the word! You win!")

# else means user lose the game.

else:

print("Sorry, you ran out of tries. The word was " + word + ". Maybe

next time!")

# function to display the format of hangman

def display_hangman(tries):

stages = ["""

--------

| |

| 0

| \\|/

| |

| / \\

-

""",

"""

--------

| |

| 0

| \\|/

| |

| /

-

""",

"""

--------

| |

| 0

| \\|/

| |

|

-

""",

"""

--------

| |

| 0

| \\|

| |

|

-

""",

"""

--------

| |

| 0

| |

| |

|

-

""",

"""

--------

| |

| 0

|

|

|

-

""",

"""

--------

| |

|

|

|

|

-

"""

]

return stages[tries]

# main function to start the game

def main():

word = get_word()

play(word)

while input("Play Again? (Y/N): ").upper() == "Y":

word = get_word()

play(word)

if __name__ == "__main__":

main()

Post a Comment

0 Comments