diff --git a/README.md b/README.md index 9a78efc..998dce5 100644 --- a/README.md +++ b/README.md @@ -7,4 +7,7 @@ Project Title: Hangman Description: -A project to produce the game of hangman using Python \ No newline at end of file +A project to produce the game of hangman using Python +milestone_2.py - file that runs through the list of words and takes and checks a user input +milestone_3.py - file that defines two functions to check user input and then see if it's in the word +milestone_4.py - file that creates the Hangman class and then builds on the functionality of the above two files and cleans up the code \ No newline at end of file diff --git a/milestone_4.py b/milestone_4.py new file mode 100644 index 0000000..5213e5e --- /dev/null +++ b/milestone_4.py @@ -0,0 +1,40 @@ +import random +# class definition for hangman +class Hangman: + # hangman constructor + def __init__ (self, word_list, num_lives=5): + # attributes + self.word = random.choice(word_list) + self.word_guessed = ['_' for _ in self.word] + self.num_letters = len(set(self.word)) + self.word_list = word_list + self.num_lives = num_lives + self.list_of_guesses = [] + + # methods + def check_guess(self, guess): + guess = guess.lower() + if guess in self.word: + print(f'Good guess! {guess} is in the word.') + for i in range(len(self.word)): + if self.word[i] == guess: + self.word_guessed[i] = guess + self.num_letters -= 1 + else: + self.num_lives -= 1 + print(f'Sorry, {guess} is not in the word') + print(f'You have {self.num_lives} lives left') + def ask_for_input(self): + while True: + guess = input('Guess a single letter: ') + if not (len(guess) == 1 and guess.isalpha()): + print("Invalid letter. Please, enter a single alphabetical character.") + elif guess in self.list_of_guesses: + print("You already tried that letter!") + else: + self.check_guess(guess) + self.list_of_guesses.append(guess) + +# test the code +hangman = Hangman(['apple', 'banana', 'cherry']) +hangman.ask_for_input() \ No newline at end of file