Zelda Nes en python (défi final)
4. Level.py
import pygame from Settings import * from Tile import Tile from Player import Player from Debug import debug from Support import * from random import choice, randint from Weapon import Weapon from UI import UI from Enemy import Enemy from Particles import AnimationPlayer from Magic import MagicPlayer from Upgrade import Upgrade import os -
- Importe les modules nécessaires pour la création du niveau, y compris les classes de tuiles, de joueur, d'armes, d'ennemis, de particules, etc.
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 Level :
python
class Level: def __init__(self): # ... (voir explications ci-dessous) def create_map(self): # ... (voir explications ci-dessous) def create_attack(self): # ... (voir explications ci-dessous) def create_magic(self, style, strength, cost): # ... (voir explications ci-dessous) def destroy_attack(self): # ... (voir explications ci-dessous) def player_attack_logic(self): # ... (voir explications ci-dessous) def damage_player(self, amount, attack_type): # ... (voir explications ci-dessous) def trigger_death_particles(self, pos, particle_type): # ... (voir explications ci-dessous) def add_exp(self, amount): # ... (voir explications ci-dessous) def toggle_menu(self): # ... (voir explications ci-dessous) def run(self): # ... (voir explications ci-dessous) Initialisation de la classe Level :
python
def __init__(self): # Get the display surface self.display_surface = pygame.display.get_surface() self.game_paused = False # Sprite Group Setup self.visible_sprites = YSortCameraGroup() self.obstacle_sprites = pygame.sprite.Group() # Attack Sprites self.current_attack = None self.attack_sprites = pygame.sprite.Group() self.attackable_sprites = pygame.sprite.Group() # Sprite Setup self.create_map() # User Interface self.ui = UI() self.upgrade = Upgrade(self.player) # Particles self.animation_player = AnimationPlayer() self.magic_player = MagicPlayer(self.animation_player) -
- Initialise la classe
Levelavec des attributs tels quedisplay_surface, des groupes de sprites, des objets pour la gestion des attaques, de l'interface utilisateur, des particules, etc.
- Initialise la classe
Création de la carte (méthode create_map) :
python
def create_map(self): # ... (voir explications ci-dessous) -
- Cette méthode crée la carte du niveau en chargeant différentes dispositions (layouts) à partir de fichiers CSV. Elle crée des tuiles, des objets, des entités (joueur et ennemis) en fonction de ces dispositions.
Création d'une attaque (méthode create_attack) :
python
def create_attack(self): # ... (voir explications ci-dessous) -
- Cette méthode crée une nouvelle instance d'attaque (
Weapon) pour le joueur.
- Cette méthode crée une nouvelle instance d'attaque (
Création de la magie (méthode create_magic) :
python
def create_magic(self, style, strength, cost): # ... (voir explications ci-dessous) -
- Cette méthode crée de la magie pour le joueur en fonction du style spécifié.
Destruction de l'attaque actuelle (méthode destroy_attack) :
python
def destroy_attack(self): # ... (voir explications ci-dessous) -
- Cette méthode détruit l'attaque actuelle du joueur.
Logique d'attaque du joueur (méthode player_attack_logic) :
python
def player_attack_logic(self): # ... (voir explications ci-dessous) -
- Cette méthode gère la logique d'attaque du joueur, détectant les collisions avec des sprites attaquables et infligeant des dégâts.
Dommage au joueur (méthode damage_player) :
python
def damage_player(self, amount, attack_type): # ... (voir explications ci-dessous) -
- Cette méthode gère les dégâts infligés au joueur.
Déclenchement de particules de mort (méthode trigger_death_particles) :
python
def trigger_death_particles(self, pos, particle_type): # ... (voir explications ci-dessous) -
- Cette méthode déclenche la création de particules lorsqu'un ennemi meurt.
Ajout d'expérience (méthode add_exp) :
python
def add_exp(self, amount): # ... (voir explications ci-dessous) -
- Cette méthode ajoute de l'expérience au joueur.
Basculement du menu (méthode toggle_menu) :
python
def toggle_menu(self): # ... (voir explications ci-dessous) -
- Cette méthode bascule l'état du menu (en pause ou en cours d'exécution).
Exécution du niveau (méthode run) :
python
def run(self): # ... (voir explications ci-dessous) - Cette méthode exécute le niveau, met à jour les sprites visibles, gère la logique d'attaque du joueur et affiche l'interface utilisateur ou le menu d'amélioration en fonction de l'état du jeu.