From dc37efc262f0904e75028ffa3474457695c526b9 Mon Sep 17 00:00:00 2001 From: Yannis300307 Date: Wed, 3 Jan 2024 13:12:14 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20d'une=20detection=20des=20collisions=20?= =?UTF-8?q?entre=20entit=C3=A9s=20et=20premi=C3=A8re=20implementation=20d'?= =?UTF-8?q?IA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/custom_AI.py | 3 ++- src/engine/entity.py | 11 ++++++++++- src/main.py | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/custom_AI.py b/src/custom_AI.py index 69eb874..0d84aa2 100644 --- a/src/custom_AI.py +++ b/src/custom_AI.py @@ -19,7 +19,8 @@ class WolfAI(MobAI): 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: self.entity.move(x_distance / player_distance*self.entity.max_speed, diff --git a/src/engine/entity.py b/src/engine/entity.py index 7a79d2c..7a02688 100644 --- a/src/engine/entity.py +++ b/src/engine/entity.py @@ -47,8 +47,10 @@ class Entity: def set_ai(self, ai: MobAI, engine: 'Engine'): """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) - print(self.brain.entity) def update(self, delta: float): """Met à jour l'entité.""" @@ -80,6 +82,13 @@ class Entity: if 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): """Calcule les collisions.""" diff --git a/src/main.py b/src/main.py index db81e7d..9d4bdef 100644 --- a/src/main.py +++ b/src/main.py @@ -36,7 +36,7 @@ class Game(Engine): player.collision_rect = [-6, -7, 6, 16] player.set_default_life(15) - player.max_speed = 2. + player.max_speed = 1.1 self.entity_manager.set_player_entity("player")