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)]