8. Entity.py

Ce code définit la classe Entity, qui est une classe de base pour les entités du jeu. Voici une explication ligne par ligne :

Imports :

python
from cmath import rect import pygame from math import sin import os
      • Importe les modules nécessaires, y compris la bibliothèque Pygame pour la création de jeux.

Changement du répertoire de travail :

python
os.chdir(os.path.dirname(os.path.abspath(__file__)))
      • Change le répertoire de travail actuel pour le répertoire du script en cours d'exécution.

Classe Entity :

python
class Entity(pygame.sprite.Sprite): def __init__(self, groups): # ... (voir explications ci-dessous) def move(self, speed): # ... (voir explications ci-dessous) def collision(self, direction): # ... (voir explications ci-dessous) def wave_value(self): # ... (voir explications ci-dessous)

Initialisation de la classe Entity :

python
def __init__(self, groups): super().__init__(groups) self.frame_index = 0 self.animation_speed = 0.15 self.direction = pygame.math.Vector2()
      • Initialise la classe Entity avec des attributs tels que l'index du frame, la vitesse d'animation et la direction de l'entité.

Méthode move :

python
def move(self, speed): if self.direction.magnitude() != 0: self.direction = self.direction.normalize() self.hitbox.x += self.direction.x * speed self.collision("Horizontal") self.hitbox.y += self.direction.y * speed self.collision("Vertical") self.rect.center = self.hitbox.center
      • Cette méthode permet à l'entité de se déplacer en fonction de sa direction et de la vitesse donnée. Elle vérifie également les collisions horizontales et verticales avec d'autres sprites.

Méthode collision :

python
def collision(self, direction): if direction == "Horizontal": # ... (voir explications ci-dessous) if direction == "Vertical": # ... (voir explications ci-dessous)
      • Cette méthode gère les collisions de l'entité avec les sprites environnants, ajustant sa position en fonction de la direction de déplacement.

Méthode wave_value :

python
def wave_value(self): value = sin(pygame.time.get_ticks()) if value >= 0: return 255 else: return 0
    • Cette méthode renvoie une valeur basée sur une onde sinusoïdale, qui peut être utilisée pour des effets visuels comme le clignotement ou la variation de l'opacité.