mirror of
https://github.com/brandon-rozek/wordguess
synced 2026-03-09 00:51:57 +00:00
Initial draft
This commit is contained in:
commit
87986d4b2a
8 changed files with 6457 additions and 0 deletions
83
client.py
Normal file
83
client.py
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
"""
|
||||
Author: Brandon Rozek
|
||||
|
||||
TODO: Argparse
|
||||
"""
|
||||
from datetime import datetime
|
||||
|
||||
from pubnix import (
|
||||
run_simple_client,
|
||||
send_message,
|
||||
receive_message
|
||||
)
|
||||
from wordguess import WordGuess
|
||||
|
||||
WIN_TEXT = lambda score: f"""
|
||||
Congratulations! You solved the word of the day.
|
||||
Come back tomorrow! Your score: {score}
|
||||
"""
|
||||
|
||||
GUESSES_REMAINING = lambda gr: f"You have {gr} guesses remaining."
|
||||
|
||||
LOSE_TEXT = """
|
||||
You ran out of guesses for the day. Come back tomorrow!
|
||||
"""
|
||||
|
||||
|
||||
class WordGuessClient:
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
|
||||
def start_game(self, client, _):
|
||||
message = receive_message(client, WordGuess.GameStartMessage)
|
||||
guesses_remaining = message.guesses_remaining
|
||||
is_winner = message.is_winner
|
||||
today = datetime.today().date()
|
||||
print(f"""
|
||||
Welcome to WordGuess!
|
||||
|
||||
The goal is to guess the word of the day.
|
||||
This word is {message.num_characters} characters long.
|
||||
|
||||
A * character means a letter was guessed correctly,
|
||||
but in the incorrect position.
|
||||
|
||||
Today is {today}.
|
||||
""")
|
||||
if is_winner:
|
||||
print(WIN_TEXT(guesses_remaining))
|
||||
elif guesses_remaining > 0:
|
||||
print(f"You have {guesses_remaining} guesses remaining")
|
||||
print("\nTo quit, press CTRL-C.")
|
||||
|
||||
try:
|
||||
while not is_winner and guesses_remaining > 0:
|
||||
guess = input("Guess: ")
|
||||
send_message(client, WordGuess.GuessMessage(guess))
|
||||
|
||||
message = receive_message(client, WordGuess.GuessResponseMessage)
|
||||
if not message.valid:
|
||||
print("Not a valid guess, try again.")
|
||||
continue
|
||||
|
||||
guesses_remaining = message.guesses_remaining
|
||||
is_winner = message.winner
|
||||
print(message.hint)
|
||||
print(GUESSES_REMAINING(guesses_remaining))
|
||||
print("Letters Guessed:", sorted(message.letters_guessed))
|
||||
|
||||
if is_winner:
|
||||
print(WIN_TEXT(guesses_remaining))
|
||||
|
||||
if not is_winner:
|
||||
print(LOSE_TEXT)
|
||||
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
w = WordGuessClient()
|
||||
run_simple_client(WordGuess.ADDRESS, w.start_game)
|
||||
Loading…
Add table
Add a link
Reference in a new issue