Zelda Nes en python (défi final)
Conditions d’achèvement
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
Entityavec des attributs tels que l'index du frame, la vitesse d'animation et la direction de l'entité.
- Initialise la classe
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é.