spacepaste

  1.  
  2. """
  3. Trying to keep it PEP8 compliant this time.
  4. Letter Game is a simple game based on hangman.
  5. You need to guess the secret word within a limited amount of strikes.
  6. """
  7. import random
  8. import os
  9. import sys
  10. fruit_list = ['apple', 'banana', 'lime', 'cherry', 'orange', 'melon', 'watermelon', 'kiwi', 'blueberry', 'nectarine']
  11. animal_list = ['monkey', 'human', 'dog', 'cat', 'lion', 'zebra', 'horse', 'dolphin', 'whale', 'flamingo', 'lizard']
  12. tech_list = ['facebook', 'yahoo', 'airbnb', 'uber', 'google', 'intel', 'idm', 'apple', 'samsung', 'amazon', 'microsoft']
  13. musicals_list = ['chicago', 'the lion king', 'the phantom of the opera', 'cats', 'les miserables', 'beauty and the\
  14. beast', 'hedwig and the angry inch', 'next to normal', 'waitress']
  15. def clear():
  16. if os.name == 'nt':
  17. os.system('cls')
  18. else:
  19. os.system('clear')
  20. def draw(good_guesses, bad_guesses, secret_word): # DRAW spaces, letters & strikes
  21. clear()
  22. print(secret_word)
  23. # printing strikes first
  24. print("Strikes: {}/7".format(len(bad_guesses)))
  25. print("")
  26. # printing bad guesses so far
  27. for letter in bad_guesses:
  28. print(letter, end=" ") # have a space between each element
  29. print("\n") # double blank lines
  30. # print discovered/undiscovered letters
  31. for letter in secret_word:
  32. if letter in good_guesses:
  33. print(letter, end=" ")
  34. else:
  35. print('_', end=" ")
  36. print('')
  37. def get_guess(bad_guesses, good_guesses): # GET GUESS & LOOP through CONDITIONS
  38. while True:
  39. print('')
  40. guess = input("Enter a letter: ").lower()
  41. # conditions
  42. if len(guess) != 1:
  43. print("You can only guess a single letter at a time.")
  44. print('')
  45. elif guess in bad_guesses or guess in good_guesses:
  46. print("You've already guessed that letter.")
  47. print('')
  48. continue
  49. elif not guess.isalpha():
  50. print("Not a valid letter! Try again.")
  51. else:
  52. return guess
  53. def play(done):
  54. list_of_lists = [fruit_list, animal_list, tech_list, musicals_list] # simply a list with various lists in it
  55. random_list = random.choice(list_of_lists) # selects one of the lists within list_of_lists
  56. secret_word = random.choice(random_list) # from random_list, selects a word
  57. secret_check = secret_word.replace(' ', '') # eliminating spaces for test
  58. good_guesses = []
  59. bad_guesses = []
  60. while True:
  61. draw(good_guesses, bad_guesses, secret_word) # call to draw(good_guesses, bad_guesses, secret_word)
  62. guess = get_guess(bad_guesses, good_guesses) # assign guess to get_guess(bad_guesses, good_guesses)
  63. # GOOD GUESSES & WIN
  64. if guess in secret_word:
  65. good_guesses.append(guess)
  66. found = True
  67. for letter in secret_check:
  68. if letter not in good_guesses:
  69. found = False
  70. # if found is True:
  71. if found:
  72. draw(good_guesses, bad_guesses, secret_word)
  73. print('')
  74. print("Congratulations!")
  75. print("The secret word was '{}'".format(secret_word))
  76. done = True
  77. # BAD GUESSES & STRIKES
  78. else: # if guess NOT IN secret_word:
  79. bad_guesses.append(guess)
  80. if len(bad_guesses) == 7:
  81. draw(bad_guesses, good_guesses, secret_word)
  82. print('')
  83. print("You ran out of guesses!")
  84. print("The secret word was '{}'".format(secret_word))
  85. done = True
  86. # PLAY AGAIN?
  87. if done: # if done is TRUE:
  88. print('')
  89. play_again = input("Play again? Y/n ").lower()
  90. if play_again != 'n':
  91. return play(done=False) # as long as done in play() is False we will keep playing
  92. else:
  93. sys.exit()
  94. def welcome():
  95. start = input("Press Enter to start or 'Q' to quit ").lower()
  96. if start == 'q':
  97. print("Game Exited")
  98. sys.exit()
  99. else:
  100. return True
  101. print("Welcome to Letter Guess!")
  102. done = False
  103. while True:
  104. clear()
  105. welcome()
  106. play(done)
  107.