|
@@ -201,25 +201,21 @@ class DeadGuy(ModelBase):
|
|
|
)
|
|
|
|
|
|
|
|
|
-def guess_letter(game_state, letter):
|
|
|
- """
|
|
|
- Guess a letter in a given game state. Assumes letter is already
|
|
|
- a single, uppercased, alpha character.
|
|
|
-
|
|
|
- Returns number of appearances of the letter, or -1 if it was
|
|
|
- already guessed.
|
|
|
- """
|
|
|
+def guess_letter(game_state, guy_state, letter):
|
|
|
+ if not letter.isalpha():
|
|
|
+ return "You should try sticking to letters!"
|
|
|
|
|
|
if letter in game_state.bad_guesses or letter in game_state.state:
|
|
|
- return -1
|
|
|
+ return f"You've already guessed '{letter}'!"
|
|
|
|
|
|
find = [i for i, x in enumerate(game_state.target) if x == letter]
|
|
|
if len(find) == 0:
|
|
|
game_state.bad_guesses = game_state.bad_guesses + letter
|
|
|
- return 0
|
|
|
+ guy_state.state = guy_state.state + 1
|
|
|
+ return "Bad guess!"
|
|
|
|
|
|
game_state.state = "".join(letter if i in find else s for i, s in enumerate(game_state.state))
|
|
|
- return len(find)
|
|
|
+ return f"Great! '{letter}' appears {len(find)} time{'' if len(find) == 1 else 's'}!"
|
|
|
|
|
|
|
|
|
def end_guy(db, guy_state):
|
|
@@ -241,17 +237,7 @@ def render_game(game_state, guy_state):
|
|
|
def handle_guess(db, guess, game_state, guy_state):
|
|
|
prefix = ""
|
|
|
if len(guess) == 1:
|
|
|
- if guess.isalpha():
|
|
|
- res = guess_letter(game_state, guess)
|
|
|
- if res == -1:
|
|
|
- prefix += f"You've already guessed '{guess}'!"
|
|
|
- elif res == 0:
|
|
|
- prefix += "Bad guess!"
|
|
|
- guy_state.state = guy_state.state + 1
|
|
|
- else:
|
|
|
- prefix += f"Great! '{guess}' appears {res} time{'' if res == 1 else 's'}!"
|
|
|
- else:
|
|
|
- prefix += "You should try sticking to letters!"
|
|
|
+ prefix += guess_letter(game_state, guy_state, guess)
|
|
|
elif game_state.target.split() == guess.split():
|
|
|
prefix = "You've guessed the full phrase!"
|
|
|
game_state.state = game_state.target
|