Advertisement
Guest User

Untitled

a guest
Feb 25th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.52 KB | None | 0 0
  1. from random import randint, shuffle
  2.  
  3. class Galgje(object):
  4. def __init__(self, word, allowed_errors=5):
  5. self.word = word
  6. self.allowed_errors = allowed_errors
  7. self.guessed_letters = set()
  8. self.correct_letters = set()
  9.  
  10. def guess(self, letter):
  11. self.guessed_letters.add(letter)
  12. if letter in self.word:
  13. self.correct_letters.add(letter)
  14.  
  15. def still_running(self):
  16. return sorted(set(self.word)) != sorted(self.correct_letters) and self.allowed_errors > len(self.incorrect_letters())
  17.  
  18. def hint(self):
  19. letters_left = list(filter(lambda f: f not in self.correct_letters, self.word))
  20. shuffle(letters_left)
  21. c = letters_left[0]
  22. self.guessed_letters.add(c)
  23. self.correct_letters.add(c)
  24.  
  25. def print(self):
  26. print('Word: ', end='')
  27. for c in self.word:
  28. if c in self.correct_letters:
  29. print(c, end='')
  30. else:
  31. print('_', end='')
  32. print()
  33. print('Guessed letters: %s' % list(self.guessed_letters))
  34. print('Errors: %s of %s' % (len(self.incorrect_letters()), self.allowed_errors))
  35.  
  36. def finish(self):
  37. if sorted(set(self.word)) == sorted(self.correct_letters):
  38. print('You guessed the word: %s' % self.word)
  39. else:
  40. print('You lost. The word was %s.' % self.word)
  41.  
  42. def incorrect_letters(self):
  43. return list(filter(lambda f: f not in self.word, self.guessed_letters))
  44.  
  45. if __name__ == '__main__':
  46. g = Galgje('somelongword')
  47. while g.still_running():
  48. g.print()
  49. letter = input('Letter or hint (?): ')
  50.  
  51. if letter == '?':
  52. g.hint()
  53. elif len(letter) == 1:
  54. g.guess(letter)
  55. else:
  56. print('Incorrect input')
  57. g.finish()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement