class Enemy(Entity): def __init__(self, monster_name, pos, groups, obstacle_sprites, damage_player, trigger_death_particles, add_exp): super().__init__(groups) self.sprite_type = "enemy" self.import_graphics(monster_name) self.status = "idle" self.image = self.animations[self.status][self.frame_index] self.rect = self.image.get_rect(topleft=pos) self.hitbox = self.rect.inflate(0, -10) self.obstacle_sprites = obstacle_sprites self.monster_name = monster_name monster_info = monster_data[self.monster_name] self.can_attack = True self.attack_time = None self.vulnerable = True self.hit_time = None self.death_sound = pygame.mixer.Sound("../Audio/Death.wav") self.hit_sound = pygame.mixer.Sound("../Audio/Hit.wav") self.attack_sound = pygame.mixer.Sound(monster_info["attack_sound"])
-
- La classe
Enemy hérite de la classe Entity (qui pourrait être une classe de base pour d'autres types d'entités dans le jeu).
- Le constructeur initialise diverses propriétés liées aux graphismes, au mouvement, aux statistiques, à l'interaction avec le joueur, aux timers, et aux sons.
Méthodes spécifiques à Enemy :
-
import_graphics(self, name): Importe les animations de l'ennemi à partir d'un répertoire spécifié.
get_player_distance_direction(self, player): Calcule la distance et la direction entre l'ennemi et le joueur.
get_status(self, player): Détermine l'état actuel de l'ennemi en fonction de la distance par rapport au joueur.
actions(self, player): Définit les actions à effectuer en fonction de l'état de l'ennemi.
animate(self): Anime l'ennemi en fonction de son état actuel.
cooldowns(self): Gère les temps de recharge pour les attaques et l'invincibilité.
get_damage(self, player, attack_type): Inflige des dégâts à l'ennemi en fonction du type d'attaque.
check_death(self): Vérifie si l'ennemi est mort et effectue des actions en conséquence.
hit_reaction(self): Gère la réaction de l'ennemi lorsqu'il est touché.
update(self): Met à jour l'état de l'ennemi (mouvement, animation, cooldowns, etc.).
enemy_update(self, player): Met à jour l'état spécifique à l'ennemi en fonction du joueur.
La classe Enemy encapsule la logique liée aux ennemis du jeu, notamment leur apparence, leur mouvement, leurs statistiques, leurs interactions avec le joueur, etc. Elle utilise également des fichiers audio pour les sons associés aux actions de l'ennemi.