Ajout d'une detection des collisions entre entités et première implementation d'IA

This commit is contained in:
Yannis 2024-01-03 13:12:14 +01:00
parent 3ba340aeba
commit dc37efc262
Signed by: yannis
SSH key fingerprint: SHA256:Bz8K8QiTYUudf8MlthTM9MCLfgiYf/U1md3V9g9Wo14
3 changed files with 13 additions and 3 deletions

View file

@ -19,7 +19,8 @@ class WolfAI(MobAI):
player_distance = math.sqrt(x_distance ** 2 + y_distance ** 2) player_distance = math.sqrt(x_distance ** 2 + y_distance ** 2)
#player.take_damages(1) if player.ge_collisions_with_entity(self.entity):
player.take_damages(1)
if abs(player_distance) > self.entity.max_speed: if abs(player_distance) > self.entity.max_speed:
self.entity.move(x_distance / player_distance*self.entity.max_speed, self.entity.move(x_distance / player_distance*self.entity.max_speed,

View file

@ -47,8 +47,10 @@ class Entity:
def set_ai(self, ai: MobAI, engine: 'Engine'): def set_ai(self, ai: MobAI, engine: 'Engine'):
"""Enregistre une classe permettant de gérer l'IA du mob.""" """Enregistre une classe permettant de gérer l'IA du mob."""
# La ligne suivante crée une instance de la classe d'IA. Cette ligne peut causer des warnings sur certains IDE
# mais elle est bien valide
self.brain = ai(self, engine.entity_manager, engine.map_manager) self.brain = ai(self, engine.entity_manager, engine.map_manager)
print(self.brain.entity)
def update(self, delta: float): def update(self, delta: float):
"""Met à jour l'entité.""" """Met à jour l'entité."""
@ -80,6 +82,13 @@ class Entity:
if self.life_points < 0: if self.life_points < 0:
self.life_points = 0 self.life_points = 0
def ge_collisions_with_entity(self, other: 'Entity'):
"""Retourne True si l'entité courante est en collision avec l'entité donnée."""
return (self.x+self.collision_rect[0] <= other.x+other.collision_rect[2] and
self.x+self.collision_rect[2] >= other.x+other.collision_rect[0] and
self.y+self.collision_rect[3] >= other.y+other.collision_rect[1] and
self.y+self.collision_rect[1] <= other.y+other.collision_rect[3])
def get_collisions(self, x: float, y: float, map_manager: MapManager): def get_collisions(self, x: float, y: float, map_manager: MapManager):
"""Calcule les collisions.""" """Calcule les collisions."""

View file

@ -36,7 +36,7 @@ class Game(Engine):
player.collision_rect = [-6, -7, 6, 16] player.collision_rect = [-6, -7, 6, 16]
player.set_default_life(15) player.set_default_life(15)
player.max_speed = 2. player.max_speed = 1.1
self.entity_manager.set_player_entity("player") self.entity_manager.set_player_entity("player")