Tu vas créer un jeu Zelda interactif !

6. ÉTAPE 5 : Le Système d'Attaque

Objectif

L'élève apprend à détecter une pression de touche pour déclencher une action offensive et à retirer un ennemi de la liste enemies.

Question motivante

"Se faire toucher, c'est bien, mais se défendre, c'est mieux ! Comment faire pour 'éliminer' un dictionnaire d'une liste ?"

Concepts clés à maîtriser

  • La gestion des événements clavier : Déclencher une action unique (touche ESPACE).

  • La distance entre deux points : Calculer si l'ennemi est assez proche pour être touché.

  • La modification de liste : Utiliser .remove() ou recréer une liste pour supprimer un ennemi mort.


Code à intégrer (Après le mouvement du joueur)

Voici la structure que vous pouvez donner à compléter à vos élèves :

Python
    # ===== SYSTÈME D'ATTAQUE =====
    if keys[pygame.K_SPACE]:
        # On crée une zone d'attaque autour du joueur (un peu plus large que lui)
        attack_range = 60 
        
        # On parcourt la liste à l'envers ou on crée une copie pour éviter les erreurs de suppression
        for enemy in enemies[:]: 
            # Calcul de la distance simplifiée (ou collision avec une zone d'attaque)
            dist_x = abs(player['x'] - enemy['x'])
            dist_y = abs(player['y'] - enemy['y'])
            
            if dist_x < attack_range and dist_y < attack_range:
                enemies.remove(enemy)
                print("Ennemi vaincu !")

Pourquoi cette étape est importante ?

  1. Logique de liste : C'est la première fois qu'ils modifient la taille de la liste enemies en plein jeu.

  2. Feedback visuel : L'ennemi disparaît instantanément de l'écran car il n'est plus parcouru dans la boucle d'affichage.


Défi pour les élèves rapides (Bonus) :

"Ajoutez une variable score qui augmente de 10 points à chaque fois qu'un ennemi est supprimé, et affichez-la dans la console !"