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 :
# ===== 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 ?
Logique de liste : C'est la première fois qu'ils modifient la taille de la liste
enemiesen plein jeu.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
scorequi augmente de 10 points à chaque fois qu'un ennemi est supprimé, et affichez-la dans la console !"