Ajout d'une detection des collisions entre entités et première implementation d'IA
This commit is contained in:
parent
3ba340aeba
commit
dc37efc262
|
@ -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,
|
||||||
|
|
|
@ -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."""
|
||||||
|
|
||||||
|
|
|
@ -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")
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue