Add actors/Behaviors.py
This commit is contained in:
38
actors/Behaviors.py
Normal file
38
actors/Behaviors.py
Normal file
@@ -0,0 +1,38 @@
|
||||
import pygame
|
||||
import random
|
||||
|
||||
def blinky_behavior(ghost, pacman, maze):
|
||||
# Simple chase: move toward Pac-Man's position
|
||||
return path_toward(ghost, pacman.rect.center, maze)
|
||||
|
||||
def pinky_behavior(ghost, pacman, maze):
|
||||
# Aim 4 tiles ahead of Pac-Man
|
||||
offset = pacman.direction * 64
|
||||
target = (pacman.rect.centerx + offset.x, pacman.rect.centery + offset.y)
|
||||
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.rect.center).distance_to(ghost.rect.center)
|
||||
if distance < 100:
|
||||
return path_toward(ghost, ghost.home_position, maze)
|
||||
return path_toward(ghost, pacman.rect.center, 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.center):
|
||||
dist = pygame.Vector2(target_pos).distance_to(test_pos.center)
|
||||
if dist < min_dist:
|
||||
min_dist = dist
|
||||
best = d
|
||||
return best
|
Reference in New Issue
Block a user