Amélioration de l'engine et ajout d'éléments de gameplay #20

Merged
yannis merged 29 commits from debut_jeu into main 2024-01-03 19:20:46 +00:00
6 changed files with 46 additions and 12 deletions
Showing only changes of commit 3ba340aeba - Show all commits

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 B

View file

@ -1,10 +1,26 @@
import math
from src.engine.entity import Entity
from src.engine.entity_manager import EntityManager
from src.engine.map_manager import MapManager
from src.engine.mobs_AI import MobAI
class WolfAI(MobAI):
def __init__(self, entity: Entity):
super().__init__(entity)
def __init__(self, entity: 'Entity', entity_manager: 'EntityManager', map_manager: 'MapManager'):
super().__init__(entity, entity_manager, map_manager)
def update(self):
self.entity.x += 1
player: Entity = self.entity_manager.get_by_name(self.entity_manager.player_entity_name)
x_distance = (player.x - self.entity.x)
y_distance = (player.y - self.entity.y)
player_distance = math.sqrt(x_distance ** 2 + y_distance ** 2)
#player.take_damages(1)
if abs(player_distance) > self.entity.max_speed:
self.entity.move(x_distance / player_distance*self.entity.max_speed,
y_distance / player_distance*self.entity.max_speed, self.map_manager)

View file

@ -45,10 +45,10 @@ class Entity:
self.life_points = life
self.max_life_points = life
def set_ai(self, ai: MobAI):
self.brain = ai
self.brain.__init__(self)
print(ai.entity)
def set_ai(self, ai: MobAI, engine: 'Engine'):
"""Enregistre une classe permettant de gérer l'IA du mob."""
self.brain = ai(self, engine.entity_manager, engine.map_manager)
print(self.brain.entity)
def update(self, delta: float):
"""Met à jour l'entité."""

View file

@ -32,6 +32,9 @@ class EntityManager:
if entity.life_points == 0:
self.entities.pop(entity_name)
if entity.brain is not None:
entity.brain.update()
if self.player_entity_name:
player: Entity = self.get_by_name(self.player_entity_name)
if player.mouvements[0] != 0. or player.mouvements[1] != 0.:

View file

@ -1,9 +1,12 @@
from src.engine.entity import Entity
import math
class MobAI:
def __init__(self, entity: Entity):
self.entity = entity
def __init__(self, entity_: 'entity.Entity', entity_manager: 'EntityManager', map_manager: 'MapManager'):
self.entity = entity_
self.entity_manager = entity_manager
self.map_manager = map_manager
def update(self):
pass

View file

@ -15,6 +15,7 @@ class Game(Engine):
self.create_player_entity()
self.load_boss_fight_assets()
self.spawn_mobs()
self.DEBUG_MODE = True
@ -35,7 +36,7 @@ class Game(Engine):
player.collision_rect = [-6, -7, 6, 16]
player.set_default_life(15)
player.max_speed = 1.
player.max_speed = 2.
self.entity_manager.set_player_entity("player")
@ -46,10 +47,21 @@ class Game(Engine):
def spawn_mobs(self):
"""Fait apparaitre les mobs de la map."""
anim = Anim(0.5)
anim.load_animation_from_directory("assets/textures/entities/wolf/none")
self.renderer.register_animation(anim, "wolf_none")
mob = self.entity_manager.register_entity("wolf1")
mob.set_ai(WolfAI)
mob.set_ai(WolfAI, self)
mob.link_animation("wolf_none")
mob.collision_rect = [-15, -7, 12, 7]
mob.set_default_life(5)
mob.max_speed = 1.
mob.x, mob.y = 160, 16
def load_boss_fight_assets(self):
"""Charge les animations de combat des combats de boss."""