36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
|
|
from time import sleep
|
|
from game.game import Game
|
|
from game.handlers.gameHandler import GameHandler
|
|
|
|
|
|
class UserPlayerGameHandler(GameHandler):
|
|
KEYBOARD_INPUTS = ["w", "q", "a", "z", "e", "d", "c"]
|
|
|
|
def __init__(self, game: Game):
|
|
super().__init__(game)
|
|
|
|
def on_position_update(self) -> None:
|
|
"""
|
|
Refresh the screen
|
|
"""
|
|
print("\n\033[2J") # Add margin for stupid vscode terminal
|
|
|
|
game_string = self.game.to_string()
|
|
for i, line in enumerate(game_string.splitlines()):
|
|
if i == 0:
|
|
line += "\tCoins: " + str(self.game.gameState.coins)
|
|
elif i == 1:
|
|
line += "\tMoves: " + str(self.game.gameState.movesCount)
|
|
print(line)
|
|
sleep(0.1)
|
|
|
|
def on_input_request(self) -> str:
|
|
"""
|
|
Listen for keyboard input, and map it to a gameState PLAYER_MOVEMENTS
|
|
"""
|
|
user_input = input(f"Enter a movement ({', '.join(self.KEYBOARD_INPUTS)}): ")
|
|
if user_input not in self.KEYBOARD_INPUTS:
|
|
print(f"Invalid input: {user_input}. Please enter one of {', '.join(self.KEYBOARD_INPUTS)}.")
|
|
return self.on_input_request()
|
|
return self.game.gameState.PLAYER_MOVEMENTS[self.KEYBOARD_INPUTS.index(user_input)] |