35 lines
1.3 KiB
Python
35 lines
1.3 KiB
Python
from Ghost import Ghost
|
|
from Vec import Vec
|
|
|
|
|
|
class Inky(Ghost):
|
|
|
|
def __init__(self, start_position: Vec, start_size: Vec, cell_count, grid_cell_size, player, maze_grid, blinky_pos,
|
|
start_delay):
|
|
super().__init__(start_position, start_size, cell_count, grid_cell_size, player, maze_grid, start_delay)
|
|
self.blinky_pos = blinky_pos
|
|
self.int_vec = None
|
|
|
|
# Aktiviert den Idle-Mode von Inky:
|
|
# Wird der Idle-Mode aktiviert springt er direkt wieder in den Hunting-Mode.
|
|
# Inky hat somit de facto keinen Idle-Mode.
|
|
def idle(self):
|
|
self.hunting()
|
|
|
|
# Aktiviert den Hunting-Mode von Inky:
|
|
# Er bewegt sich zu einem Punkt der sich aus PacMan und Blinkys Position berechnet.
|
|
def hunting(self):
|
|
vec_blinky_pac: Vec = self.player.position.add_ret(self.blinky_pos.mul_ret(-1))
|
|
direction = vec_blinky_pac.get_normalized()
|
|
vec_blinky_pac = self.player.position.add_ret(vec_blinky_pac)
|
|
direction.mul(-20)
|
|
|
|
while True:
|
|
self.int_vec = vec_blinky_pac.mul_ret(1 / self.grid_cell_size).to_int_ret()
|
|
if 30 > self.int_vec.x >= 0 and 30 > self.int_vec.y >= 0:
|
|
if self.maze_grid[self.int_vec.x][self.int_vec.y] == 0:
|
|
break
|
|
vec_blinky_pac.add(direction)
|
|
|
|
self.move_to_point(self.int_vec)
|