Debut implementation des IA de mobs

This commit is contained in:
Yannis 2024-01-02 15:55:40 +01:00
parent ea2f02b2ab
commit 361837795c
Signed by: yannis
SSH key fingerprint: SHA256:Bz8K8QiTYUudf8MlthTM9MCLfgiYf/U1md3V9g9Wo14
4 changed files with 36 additions and 2 deletions

10
src/custom_AI.py Normal file
View file

@ -0,0 +1,10 @@
from src.engine.entity import Entity
from src.engine.mobs_AI import MobAI
class WolfAI(MobAI):
def __init__(self, entity: Entity):
super().__init__(entity)
def update(self):
self.entity.x += 1

View file

@ -1,6 +1,7 @@
import math
from src.engine.map_manager import MapManager
from src.engine.mobs_AI import MobAI
class Entity:
@ -31,6 +32,7 @@ class Entity:
# Time utilisé pour les IA
self.time = 0
self.brain: MobAI | None = None
self.name = name
@ -43,6 +45,11 @@ 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 update(self, delta: float):
"""Met à jour l'entité."""
self.time += delta

9
src/engine/mobs_AI.py Normal file
View file

@ -0,0 +1,9 @@
from src.engine.entity import Entity
class MobAI:
def __init__(self, entity: Entity):
self.entity = entity
def update(self):
pass

View file

@ -1,5 +1,6 @@
import pygame.image
from src.custom_AI import WolfAI
from src.engine.animation import Anim
from src.engine.engine import Engine
from src.engine.enums import GameState
@ -15,7 +16,7 @@ class Game(Engine):
self.create_player_entity()
self.load_boss_fight_assets()
self.DEBUG_MODE = False
self.DEBUG_MODE = True
self.game_state = GameState.NORMAL
@ -33,7 +34,7 @@ class Game(Engine):
player.link_animation("player_none")
player.collision_rect = [-6, -7, 6, 16]
player.set_default_life(10)
player.set_default_life(15)
player.max_speed = 1.
self.entity_manager.set_player_entity("player")
@ -43,6 +44,13 @@ class Game(Engine):
self.camera.follow_entity(player)
def spawn_mobs(self):
"""Fait apparaitre les mobs de la map."""
mob = self.entity_manager.register_entity("wolf1")
mob.set_ai(WolfAI)
def load_boss_fight_assets(self):
"""Charge les animations de combat des combats de boss."""
player_none = Anim(1)