Spikes, better gameHandler, map width and height computed automatically & big peanut hard map

This commit is contained in:
2026-10-10 16:21:11 +02:00
parent 14a39b7154
commit 17f00ebca2
12 changed files with 131 additions and 37 deletions
+39 -5
View File
@@ -1,14 +1,48 @@
from time import sleep
from game.game import Game
from game.handlers.gameHandler import GameHandler
from game.handlers.gameHandler import GameHandler
from game.game import Game
from game.gameState import GameState
from game.mapReader import MapReader
from game.mapSet import MapSet
class UserPlayerGameHandler(GameHandler):
KEYBOARD_INPUTS = ["w", "q", "a", "z", "e", "d", "c"]
def __init__(self, game: Game):
super().__init__(game)
def __init__(self):
super().__init__()
self.mapReader = MapReader()
self.mapSet = MapSet(self.mapReader, self.mapReader.get_map_names())
self.map = self._choose_map()
self.gameState = GameState()
self.game = Game(self.map, self.gameState)
self.game.set_waiting_for_input_callback(self.on_input_request)
self.game.set_position_update_callback(self.on_position_update)
def _choose_map(self):
"""
Prompt the user to choose a map from the available maps
"""
print("\nAvailable maps:")
for i, map_name in enumerate(self.mapReader.get_map_names()):
print(f"{i + 1}. {map_name.replace("_", " ").title()}")
while True:
try:
choice = int(input("Choose a map by number: ")) - 1
if 0 <= choice < len(self.mapReader.get_map_names()):
return self.mapSet.get_map(choice)
else:
print("Invalid choice. Please try again.")
except ValueError:
print("Invalid input. Please enter a number.")
def run(self) -> None:
"""
Run the game loop
"""
self.game.start_game()
print("Game over : You " + ("Won!" if self.game.gameState.gameWon else "Lost!"))
def on_position_update(self) -> None:
"""