from github
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
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
|
||||
Reference in New Issue
Block a user