Files
pacmanpythondhbw/Game_Package/Clyde.py
T
2024-10-29 17:18:30 +01:00

44 lines
1.8 KiB
Python

import math
import time
from Ghost import Ghost
from Vec import Vec
class Clyde(Ghost):
def __init__(self, start_position: Vec, start_size: Vec, cell_count,
grid_cell_size, player, maze_grid, start_delay):
super().__init__(start_position, start_size, cell_count, grid_cell_size, player, maze_grid, start_delay)
self.idle_points = [Vec(12, 12), Vec(17, 12), Vec(17, 15), Vec(12, 15)]
self.idle_index = 0
# Aktiviert den Idle-Mode von Clyde:
# Er begibt sich zurück in das Haus und läuft dort im Kreis.
def idle(self):
self.move_to_point(self.idle_points[self.idle_index])
if abs(self.idle_points[self.idle_index].mul_ret(self.grid_cell_size).distance(self.position)) <= self.speed:
self.idle_index += 1
if self.idle_index > 3:
self.idle_index = 0
# Aktiviert den Hunting-Mode von Clyde:
# Solange der Spieler mehr als 2 Felder von Clyde entfernt ist
# bewegt er sich zu der aktuellen Position des Spielers.
# Ist er näher als 2 Felder hört er auf PacMan zu jagen
def hunting(self):
if self.position.distance(self.player.position) > 2.5 * self.grid_cell_size:
player_pos = Vec(math.floor((self.player.position.x + self.grid_cell_size / 2) / self.grid_cell_size),
math.floor((self.player.position.y + self.grid_cell_size / 2) / self.grid_cell_size))
self.move_to_point(player_pos)
else:
self.stateChange = time.time()
self.chase = False
# Überschreibt den Timer aus der Ghost-Klasse.
# Wenn er den Spieler nicht jagt, dann wird self.chase nach 6 Sekunden wieder auf True gesetzt
def timer(self):
if not self.chase:
if time.time() - self.stateChange > 6:
self.chase = True