import pygame from enums import GhostColor, GhostMode class ActorGhost(pygame.sprite.Sprite): def __init__(self, name, color_enum, position, speed): super().__init__() self.name = name self.color = color_enum.value self.image = pygame.Surface((16, 16)) self.image.fill(self.color) self.rect = self.image.get_rect(center=position) self.speed = speed self.direction = pygame.Vector2(1, 0) self.mode = GhostMode.SCATTER self.home_position = position def update(self, maze): new_pos = self.rect.move(self.direction.x * self.speed, self.direction.y * self.speed) if not maze.is_wall(new_pos.center): self.rect = new_pos else: self.change_direction(maze) def change_direction(self, maze): import random directions = [pygame.Vector2(1, 0), pygame.Vector2(-1, 0), pygame.Vector2(0, 1), pygame.Vector2(0, -1)] random.shuffle(directions) for d in directions: test_pos = self.rect.move(d.x * self.speed, d.y * self.speed) if not maze.is_wall(test_pos.center): self.direction = d break def set_mode(self, mode: GhostMode): self.mode = mode