Advertisement
UME14

Hangman (game)

Apr 28th, 2018
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.29 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Wed Dec 6 07:52:42 2017
  4.  
  5. @author: Usama
  6. """
  7. # Hangman game
  8. #
  9.  
  10. # -----------------------------------
  11. # Helper code
  12. # You don't need to understand this helper code,
  13. # but you will have to know how to use the functions
  14. # (so be sure to read the docstrings!)
  15.  
  16. import random
  17.  
  18. WORDLIST_FILENAME = "words.txt"
  19.  
  20.  
  21. def loadWords():
  22. """
  23. Returns a list of valid words. Words are strings of lowercase letters.
  24.  
  25. Depending on the size of the word list, this function may
  26. take a while to finish.
  27. """
  28. print("Loading word list from file...")
  29. # inFile: file
  30. inFile = open(WORDLIST_FILENAME, 'r')
  31. # line: string
  32. line = inFile.readline()
  33. # wordlist: list of strings
  34. wordlist = line.split()
  35. print(" ", len(wordlist), "words loaded.")
  36. return wordlist
  37.  
  38.  
  39. def chooseWord(wordlist):
  40. """
  41. wordlist (list): list of words (strings)
  42.  
  43. Returns a word from wordlist at random
  44. """
  45. return random.choice(wordlist)
  46.  
  47.  
  48. # end of helper code
  49. # -----------------------------------
  50.  
  51. # Load the list of words into the variable wordlist
  52. # so that it can be accessed from anywhere in the program
  53. wordlist = loadWords()
  54. randomWord = chooseWord(wordlist)
  55.  
  56. #print(randomWord)
  57.  
  58.  
  59. def isWordGuessed(secretWord, lettersGuessed):
  60. '''
  61. secretWord: string, the word the user is guessing
  62. lettersGuessed: list, what letters have been guessed so far
  63. returns: boolean, True if all the letters of secretWord are in lettersGuessed;
  64. False otherwise
  65. '''
  66. # FILL IN YOUR CODE HERE...
  67. save_word = []
  68. count = 0
  69.  
  70. for w in lettersGuessed:
  71. if w in secretWord:
  72. count += 1
  73. save_word.append(w)
  74. return sorted(save_word) == sorted(secretWord)
  75.  
  76.  
  77. def getGuessedWord(secretWord, lettersGuessed):
  78. '''
  79. secretWord: string, the word the user is guessing
  80. lettersGuessed: list, what letters have been guessed so far
  81. returns: string, comprised of letters and underscores that represents
  82. what letters in secretWord have been guessed so far.
  83. '''
  84. # FILL IN YOUR CODE HERE...
  85. word_final = ''
  86. word_save = ' '
  87. for d in secretWord:
  88. if d in lettersGuessed:
  89. word_save += d
  90.  
  91. for w in secretWord:
  92. if w in word_save:
  93. word_final += w
  94. else:
  95. word_final += '_ '
  96.  
  97. return word_final
  98.  
  99.  
  100. def getAvailableLetters(lettersGuessed):
  101. '''
  102. lettersGuessed: list, what letters have been guessed so far
  103. returns: string, comprised of letters that represents what letters have not
  104. yet been guessed.
  105. '''
  106. # FILL IN YOUR CODE HERE...
  107. import string
  108. alphabet = list(string.ascii_lowercase)
  109. #input : only LIST
  110. for w in lettersGuessed:
  111. if w in alphabet:
  112. alphabet.remove(w)
  113. return ''.join(alphabet)
  114.  
  115.  
  116. def hangman(secretWord):
  117. '''
  118. secretWord: string, the secret word to guess.
  119.  
  120. Starts up an interactive game of Hangman.
  121.  
  122. * At the start of the game, let the user know how many
  123. letters the secretWord contains.
  124.  
  125. * Ask the user to supply one guess (i.e. letter) per round.
  126.  
  127. * The user should receive feedback immediately after each guess
  128. about whether their guess appears in the computers word.
  129.  
  130. * After each round, you should also display to the user the
  131. partially guessed word so far, as well as letters that the
  132. user has not yet guessed.
  133.  
  134. Follows the other limitations detailed in the problem write-up.
  135. '''
  136. # FILL IN YOUR CODE HERE...
  137. print('Welcome to the game, Hangman!')
  138. print('I am thinking of a word that is ' + str(len(secretWord)) +
  139. ' letters long')
  140. print('-------------')
  141.  
  142. raw_input = str(input('Please guess a letter: '))
  143. guessLetter = raw_input.lower()
  144. remainingGuess = 8
  145. lettersGuessed = []
  146.  
  147. while (remainingGuess > 0) or isWordGuessed == False:
  148.  
  149. print('You have ' + str(remainingGuess) + ' guesses left.')
  150.  
  151. print('Available letters: ' + getAvailableLetters(lettersGuessed))
  152.  
  153. print('Please guess a letter: ' + guessLetter)
  154.  
  155. print('--->testing the list' + str(lettersGuessed)) #temporary =^=
  156.  
  157. #checking starts here
  158.  
  159. if guessLetter not in getAvailableLetters(lettersGuessed):
  160. print('Oops! That letter is not in my word: ' +
  161. getGuessedWord(secretWord, lettersGuessed))
  162. lettersGuessed.append(guessLetter)
  163. remainingGuess -= 1
  164.  
  165. elif guessLetter in lettersGuessed:
  166. print("Oops! You've already guessed that letter: " +
  167. getGuessedWord(secretWord, lettersGuessed))
  168.  
  169. #elif '_ ' not in getGuessedWord(secretWord, lettersGuessed):
  170. # print('Good guess: ' + getGuessedWord(secretWord, lettersGuessed))
  171. else:
  172. print('Good guess: ' + getGuessedWord(secretWord, lettersGuessed))
  173. lettersGuessed.append(guessLetter)
  174. if getGuessedWord(secretWord, lettersGuessed) == secretWord:
  175. break
  176.  
  177. print('-------------')
  178.  
  179. if getGuessedWord(secretWord, lettersGuessed) == secretWord:
  180. print('Congratulations, you won!')
  181.  
  182. if not (getGuessedWord(secretWord, lettersGuessed) == secretWord) and (remainingGuess == 0):
  183. print('Sorry, you ran out of guesses. The word was ' + secretWord)
  184. # When you've completed your hangman function, uncomment these two lines
  185. # and run this file to test! (hint: you might want to pick your own
  186. # secretWord while you're testing)
  187.  
  188. secretWord = chooseWord(wordlist).lower()
  189. hangman(secretWord)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement