- """
- Trying to keep it PEP8 compliant this time.
- Letter Game is a simple game based on hangman.
- You need to guess the secret word within a limited amount of strikes.
- """
- import random
- import os
- import sys
- fruit_list = ['apple', 'banana', 'lime', 'cherry', 'orange', 'melon', 'watermelon', 'kiwi', 'blueberry', 'nectarine']
- animal_list = ['monkey', 'human', 'dog', 'cat', 'lion', 'zebra', 'horse', 'dolphin', 'whale', 'flamingo', 'lizard']
- tech_list = ['facebook', 'yahoo', 'airbnb', 'uber', 'google', 'intel', 'idm', 'apple', 'samsung', 'amazon', 'microsoft']
- musicals_list = ['chicago', 'the lion king', 'the phantom of the opera', 'cats', 'les miserables', 'beauty and the\
- beast', 'hedwig and the angry inch', 'next to normal', 'waitress']
- def clear():
- if os.name == 'nt':
- os.system('cls')
- else:
- os.system('clear')
- def draw(good_guesses, bad_guesses, secret_word): # DRAW spaces, letters & strikes
- clear()
- print(secret_word)
- # printing strikes first
- print("Strikes: {}/7".format(len(bad_guesses)))
- print("")
- # printing bad guesses so far
- for letter in bad_guesses:
- print(letter, end=" ") # have a space between each element
- print("\n") # double blank lines
- # print discovered/undiscovered letters
- for letter in secret_word:
- if letter in good_guesses:
- print(letter, end=" ")
- else:
- print('_', end=" ")
- print('')
- def get_guess(bad_guesses, good_guesses): # GET GUESS & LOOP through CONDITIONS
- while True:
- print('')
- guess = input("Enter a letter: ").lower()
- # conditions
- if len(guess) != 1:
- print("You can only guess a single letter at a time.")
- print('')
- elif guess in bad_guesses or guess in good_guesses:
- print("You've already guessed that letter.")
- print('')
- continue
- elif not guess.isalpha():
- print("Not a valid letter! Try again.")
- else:
- return guess
- def play(done):
- list_of_lists = [fruit_list, animal_list, tech_list, musicals_list] # simply a list with various lists in it
- random_list = random.choice(list_of_lists) # selects one of the lists within list_of_lists
- secret_word = random.choice(random_list) # from random_list, selects a word
- secret_check = secret_word.replace(' ', '') # eliminating spaces for test
- good_guesses = []
- bad_guesses = []
- while True:
- draw(good_guesses, bad_guesses, secret_word) # call to draw(good_guesses, bad_guesses, secret_word)
- guess = get_guess(bad_guesses, good_guesses) # assign guess to get_guess(bad_guesses, good_guesses)
- # GOOD GUESSES & WIN
- if guess in secret_word:
- good_guesses.append(guess)
- found = True
- for letter in secret_check:
- if letter not in good_guesses:
- found = False
- # if found is True:
- if found:
- draw(good_guesses, bad_guesses, secret_word)
- print('')
- print("Congratulations!")
- print("The secret word was '{}'".format(secret_word))
- done = True
- # BAD GUESSES & STRIKES
- else: # if guess NOT IN secret_word:
- bad_guesses.append(guess)
- if len(bad_guesses) == 7:
- draw(bad_guesses, good_guesses, secret_word)
- print('')
- print("You ran out of guesses!")
- print("The secret word was '{}'".format(secret_word))
- done = True
- # PLAY AGAIN?
- if done: # if done is TRUE:
- print('')
- play_again = input("Play again? Y/n ").lower()
- if play_again != 'n':
- return play(done=False) # as long as done in play() is False we will keep playing
- else:
- sys.exit()
- def welcome():
- start = input("Press Enter to start or 'Q' to quit ").lower()
- if start == 'q':
- print("Game Exited")
- sys.exit()
- else:
- return True
- print("Welcome to Letter Guess!")
- done = False
- while True:
- clear()
- welcome()
- play(done)