Update actors/ghost.py

This commit is contained in:
2025-04-15 21:29:09 +02:00
parent 931211e604
commit 411db32203

View File

@@ -1,5 +1,36 @@
from .enums import GhostDirection
import pygame
from enums import GhostColor, GhostMode
class ActorGhost:
def __init__(self):
pass
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