From 46ca725a7e38ade2617ac6e4d7ddee0885662a0e Mon Sep 17 00:00:00 2001 From: yannis300307 Date: Sat, 13 Jan 2024 10:24:05 +0100 Subject: [PATCH] =?UTF-8?q?Implementation=20du=20delta=20time=20pour=20les?= =?UTF-8?q?=20entit=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/custom_AI.py | 2 +- src/engine/engine.py | 2 +- src/engine/entity.py | 8 ++++---- src/engine/entity_manager.py | 5 ++--- src/engine/event_handler.py | 10 +++++----- src/main.py | 4 ++-- 6 files changed, 15 insertions(+), 16 deletions(-) diff --git a/src/custom_AI.py b/src/custom_AI.py index 038540c..f90993e 100644 --- a/src/custom_AI.py +++ b/src/custom_AI.py @@ -66,4 +66,4 @@ class WolfAI(MobAI): # On fait avancer le loup quand il le doit if self.comportment == 1: - self.entity.move(self.walk_x, self.walk_y, self.map_manager) + self.entity.move(self.walk_x, self.walk_y, self.map_manager, delta) diff --git a/src/engine/engine.py b/src/engine/engine.py index 70732ab..596ae3c 100644 --- a/src/engine/engine.py +++ b/src/engine/engine.py @@ -60,7 +60,7 @@ class Engine: self.camera.update() self.entity_manager.update(delta) self.renderer.update(delta) - self.event_handler.update() + self.event_handler.update(delta) self.event_sheduler.update() self.dialogs_manager.update(delta) self.sound_manager.update(delta) diff --git a/src/engine/entity.py b/src/engine/entity.py index 9b7e571..88ea774 100644 --- a/src/engine/entity.py +++ b/src/engine/entity.py @@ -116,10 +116,10 @@ class Entity: return collision - def move(self, x: float, y: float, map_manager: MapManager): + def move(self, x: float, y: float, map_manager: MapManager, delta: float): """Fait bouger l'entité en tenant compte des collisions.""" - if not self.locked: # Si l'entité n'est pas verrouillée on calcul le mouvement + if not self.locked: # Si l'entité n'est pas verrouillée on calcul le mouvement # On vérifie le sens du mouvement pour changer self.direction if x > 0: @@ -131,8 +131,8 @@ class Entity: # On normalise la vitesse initial_speed = math.sqrt(x**2+y**2) - x = x/initial_speed*self.max_speed - y = y/initial_speed*self.max_speed + x = x*delta/initial_speed*self.max_speed + y = y*delta/initial_speed*self.max_speed # On simule le mouvement. Si on ne rencontre pas de collision, on applique le mouvement diff --git a/src/engine/entity_manager.py b/src/engine/entity_manager.py index 1744339..f7ac98c 100644 --- a/src/engine/entity_manager.py +++ b/src/engine/entity_manager.py @@ -21,10 +21,10 @@ class EntityManager: """Définit l'entité donnée comme le joueur. Elle peut donc être controlée.""" self.player_entity_name = name - def move_player_controls(self, x: float, y: float): + def move_player_controls(self, x: float, y: float, delta: float): """Bouge le joueur. X et y doivent être compris entre 0 et 1""" player: Entity = self.get_by_name(self.player_entity_name) - player.move(x, y, self.map_manager) + player.move(x, y, self.map_manager, delta) def update(self, delta: float): """Met à jour toutes les entités enregistrées.""" @@ -61,7 +61,6 @@ class EntityManager: e.lock() self.paused = True - def resume(self): """Reprend les mouvement de toutes les entitées qui n'étaient pas lock avant l'appel de .pause()""" for e in self.get_all_entities(): diff --git a/src/engine/event_handler.py b/src/engine/event_handler.py index 3e77cfe..3cdf804 100644 --- a/src/engine/event_handler.py +++ b/src/engine/event_handler.py @@ -98,7 +98,7 @@ class EventHandler: return x_value, y_value - def update(self): + def update(self, delta: float): """Vérifie s'il y a de nouvelles interactions et les traites.""" window_size = display.get_window_size() @@ -203,13 +203,13 @@ class EventHandler: if self.engine.entity_manager.player_entity_name: if K_RIGHT in self.key_pressed: - self.engine.entity_manager.move_player_controls(1, 0) + self.engine.entity_manager.move_player_controls(1, 0, delta) if K_LEFT in self.key_pressed: - self.engine.entity_manager.move_player_controls(-1, 0) + self.engine.entity_manager.move_player_controls(-1, 0, delta) if K_UP in self.key_pressed: - self.engine.entity_manager.move_player_controls(0, -1) + self.engine.entity_manager.move_player_controls(0, -1, delta) if K_DOWN in self.key_pressed: - self.engine.entity_manager.move_player_controls(0, 1) + self.engine.entity_manager.move_player_controls(0, 1, delta) if K_SPACE in self.key_pressed: self.engine.dialogs_manager.next_signal() diff --git a/src/main.py b/src/main.py index 9effaca..1ecf7ef 100644 --- a/src/main.py +++ b/src/main.py @@ -72,7 +72,7 @@ class Game(Engine): player.collision_rect = [-6, -7, 6, 16] player.set_default_life(15) - player.max_speed = 1.1 + player.max_speed = 64.0 self.entity_manager.set_player_entity("player") @@ -95,7 +95,7 @@ class Game(Engine): mob.collision_rect = [-15, -7, 12, 7] mob.set_default_life(5) - mob.max_speed = 1. + mob.max_speed = 60. mob.x, mob.y = 1600, 16