Zelda Nes en python (défi final)

10. Particles.py

Ce code définit la classe AnimationPlayer et la classe ParticleEffect, qui gèrent les animations des particules dans le jeu. Voici une explication ligne par ligne :

Importation de modules et de fonctions :

python
import pygame from Support import import_folder from random import choice import os
    • Importe les modules nécessaires, y compris Pygame pour la création de jeux, et les fonctions d'assistance.
  • 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 AnimationPlayer :

    python
class AnimationPlayer: def __init__(self): # ... (voir explications ci-dessous) def reflect_images(self, frames): # ... (voir explications ci-dessous) def create_grass_particles(self, pos, groups): # ... (voir explications ci-dessous) def create_particles(self, animation_type, pos, groups): # ... (voir explications ci-dessous)
  • Initialisation de la classe AnimationPlayer :

    python
def __init__(self): self.frames = { # ... (voir explications ci-dessous) }
    • Initialise la classe AnimationPlayer avec un dictionnaire contenant différents types d'animations pour les particules.
  • Méthode reflect_images :

    python
def reflect_images(self, frames): new_frames = [] for frame in frames: flipped_frame = pygame.transform.flip(frame, True, False) new_frames.append(flipped_frame) return new_frames
    • Cette méthode retourne une liste de frames d'animation reflétées horizontalement.
  • Méthode create_grass_particles :

    python
def create_grass_particles(self, pos, groups): animation_frames = choice(self.frames["leaf"]) ParticleEffect(pos, animation_frames, groups)
    • Cette méthode crée des particules d'herbe en choisissant aléatoirement parmi les animations de feuilles.
  • Méthode create_particles :

    python
def create_particles(self, animation_type, pos, groups): animation_frames = self.frames[animation_type] ParticleEffect(pos, animation_frames, groups)
    • Cette méthode crée des particules en fonction du type d'animation spécifié et de la position donnée.
  • Classe ParticleEffect :

    python
class ParticleEffect(pygame.sprite.Sprite): def __init__(self, pos, animation_frames, groups): # ... (voir explications ci-dessous) def animate(self): # ... (voir explications ci-dessous) def update(self): # ... (voir explications ci-dessous)
  • Initialisation de la classe ParticleEffect :

    python
def __init__(self, pos, animation_frames, groups): super().__init__(groups) self.sprite_type = "magic" self.frame_index = 0 self.animation_speed = 0.15 self.frames = animation_frames self.image = self.frames[self.frame_index] self.rect = self.image.get_rect(center = pos)
    • Initialise la classe ParticleEffect avec différentes propriétés pour gérer l'animation des particules.

Méthode animate :

python
def animate(self): self.frame_index += self.animation_speed if self.frame_index >= len(self.frames): self.kill() else: self.image = self.frames[int(self.frame_index)]
  • Cette méthode anime les particules en changeant les images à un certain rythme. Si l'animation est terminée, la particule est supprimée.

Méthode update :

python
def update(self): self.animate()
  • Cette méthode met à jour l'animation des particules lorsqu'elle est appelée dans la boucle principale du jeu.