import pygame import random def blinky_behavior(ghost, pacman, maze): # Simple chase: move toward Pac-Man's position return path_toward(ghost, (pacman.x, pacman.y), maze) def pinky_behavior(ghost, pacman, maze): # Aim 4 tiles ahead of Pac-Man offset = pacman.x + 128 target = (pacman.x + offset, pacman.y + offset) return path_toward(ghost, target, maze) def inky_behavior(ghost, pacman, maze): # Placeholder for now: same as Pinky return pinky_behavior(ghost, pacman, maze) def clyde_behavior(ghost, pacman, maze): # If close to Pac-Man, scatter; otherwise chase distance = pygame.Vector2(pacman.x).distance_to(ghost.rect.center) if distance < 100: return path_toward(ghost, ghost.home_position, maze) return path_toward(ghost, pacman.x, maze) def path_toward(ghost, target_pos, maze): # Placeholder logic: pick a direction that reduces distance to target directions = [pygame.Vector2(1, 0), pygame.Vector2(-1, 0), pygame.Vector2(0, 1), pygame.Vector2(0, -1)] best = ghost.direction min_dist = float("inf") for d in directions: test_pos = ghost.rect.move(d.x * ghost.speed, d.y * ghost.speed) if not maze.is_wall(test_pos[0], test_pos[1]): dist = pygame.Vector2(target_pos).distance_to(test_pos.center) if dist < min_dist: min_dist = dist best = d return best