Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 29 additions & 2 deletions game.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import random
from wonderwords import RandomWord

SNOWMAN_MIN_WORD_LENGTH = 5
SNOWMAN_MAX_WORD_LENGTH = 8
SNOWMAN_MAX_WRONG_GUESSES = 7
Expand All @@ -20,7 +23,30 @@ def snowman(snowman_word):
If the player wins and,
'Sorry, you lose! The word was {snowman_word}' if the player loses
"""
pass

correct_letter_guess_statuses = build_letter_status_dict(snowman_word)
wrong_guesses_list = []
wrong_guesses_count = 0

while wrong_guesses_count < SNOWMAN_MAX_WRONG_GUESSES:
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work with this while loop! We don't actually know how many times it will take a user to guess the word or hit the limit of wrong guesses (could keep make invalid guesses) so this the perfect choice for that situation!

print_word_progress_string(snowman_word, correct_letter_guess_statuses)

if is_word_guessed(snowman_word, correct_letter_guess_statuses):
print("Congratulations, you win!")
return
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice use of the return keyword. This allows for us to exit not only the while loop early if this condition is met but also the function as a whole.


guess = get_letter_from_user(correct_letter_guess_statuses, wrong_guesses_list)

if guess in snowman_word:
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another way that this could be done is by checking the dictionary that was constructed with build_letter_status_dict. There are some advantages here that we've not talked about yet but it doesn't hurt to think through how it could be done!

correct_letter_guess_statuses[guess] = True
else:
wrong_guesses_list.append(guess)
wrong_guesses_count += 1
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we necessarily need to keep count of the wrong guesses? How could we get this same information from the list of wrong guesses that we have?

print_snowman_graphic(wrong_guesses_count)
print(f"Wrong guesses so far: {wrong_guesses_list}")
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For a better user experience, how could we alter this print statement so that the [] aren't wrapped around the guesses of a player?



print(f"Sorry, you lose! The word was {snowman_word}.")


def print_snowman_graphic(wrong_guesses_count):
Expand Down Expand Up @@ -116,4 +142,5 @@ def is_word_guessed(snowman_word, correct_letter_guess_statuses):
for letter in snowman_word:
if not correct_letter_guess_statuses[letter]:
return False
return True
return True