From 5c05c687e12fa0b661cabe32a42ef679d057199f Mon Sep 17 00:00:00 2001 From: Jan Lerking Date: Sat, 19 Apr 2025 21:55:47 +0200 Subject: [PATCH] Added maze constricted movement. /JL --- actors/pacman.py | 18 +++++++++++++++++- pman.py | 18 +++++++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/actors/pacman.py b/actors/pacman.py index c50be67..83279af 100644 --- a/actors/pacman.py +++ b/actors/pacman.py @@ -15,7 +15,7 @@ class ActorPacman: self.max_mouth_deg = 45 self.animate_speed = 2 self.mouth_closing = False - self.location = start_location + self.location = list(start_location) self.maze = maze def update(self): @@ -53,18 +53,34 @@ class ActorPacman: def move_right(self): for _ in range(16): self.x += self.speed + self.location[0] += 1 + if self.location[0] > 28: + self.location[0] = 0 + self.x = 16 def move_left(self): for _ in range(16): self.x -= self.speed + self.location[0] -= 1 + if self.location[0] < 0: + self.location[0] = 28 + self.x = (32 * 29) - 16 def move_up(self): for _ in range(16): self.y -= self.speed + self.location[1] -= 1 + if self.location[1] < 0: + self.location[1] = 32 + self.y = (32 * 30) + 48 def move_down(self): for _ in range(16): self.y += self.speed + self.location[1] += 1 + if self.location[1] > 32: + self.location[1] = 0 + self.y = 48 def set_direction(self, dir: PlayerDirection): self.direction = dir \ No newline at end of file diff --git a/pman.py b/pman.py index 2c1a795..cf80d7f 100644 --- a/pman.py +++ b/pman.py @@ -7,7 +7,7 @@ from actors.ghost_mode_controller import GhostModeController from hud import HUD from maze import Maze -__version__ = "0.3.2" +__version__ = "0.3.3" def spawn_ghosts(center_position): @@ -61,29 +61,45 @@ def main() -> None: case pygame.KEYDOWN: match event.key: case pygame.K_RIGHT: + if maze.is_wall(player.location[0] + 1, player.location[1]): + break player.direction = PlayerDirection.DirectionRight player.move_right() case pygame.K_LEFT: + if maze.is_wall(player.location[0] - 1, player.location[1]): + break player.direction = PlayerDirection.DirectionLeft player.move_left() case pygame.K_UP: + if maze.is_wall(player.location[0], player.location[1] - 1): + break player.direction = PlayerDirection.DirectionUp player.move_up() case pygame.K_DOWN: + if maze.is_wall(player.location[0], player.location[1] + 1): + break player.direction = PlayerDirection.DirectionDown player.move_down() case pygame.JOYHATMOTION: hat_x, hat_y = event.value if hat_x == 1: + if maze.is_wall(player.location[0] + 1, player.location[1]): + break player.direction = PlayerDirection.DirectionRight player.move_right() elif hat_x == -1: + if maze.is_wall(player.location[0] - 1, player.location[1]): + break player.direction = PlayerDirection.DirectionLeft player.move_left() elif hat_y == 1: + if maze.is_wall(player.location[0], player.location[1] - 1): + break player.direction = PlayerDirection.DirectionUp player.move_up() elif hat_y == -1: + if maze.is_wall(player.location[0], player.location[1] + 1): + break player.direction = PlayerDirection.DirectionDown player.move_down() # Handle hotplugging