Tu vas créer un jeu Zelda interactif !
5. ÉTAPE 4 : Gérer les collisions (Game Over)
Objectif
L'élève apprend à détecter quand deux rectangles se touchent pour déclencher une action (ici, arrêter le jeu ou réinitialiser la position).
Question motivante
"À quoi servent des ennemis si on peut leur passer au travers sans danger ? Comment faire pour que le jeu sache quand le joueur est touché ?"
Concepts clés à maîtriser
La détection de collision (AABB) : Vérifier si les coordonnées d'un rectangle chevauchent celles d'un autre.
La structure conditionnelle
ifcomplexe : Utiliser des opérateurs logiques pour comparer les positions.La gestion de l'état du jeu : Savoir quand stopper la boucle ou modifier une variable.
Code à compléter (Suite du TP)
Vous pouvez demander à vos élèves d'ajouter ce bloc juste après la section du déplacement des ennemis :
# ===== DÉTECTION DES COLLISIONS =====
for enemy in enemies:
# On vérifie si le rectangle du joueur touche le rectangle de l'ennemi
# Formule simplifiée : (A.gauche < B.droite) et (A.droite > B.gauche) ...
if (player['x'] < enemy['x'] + enemy['width'] and
player['x'] + player['width'] > enemy['x'] and
player['y'] < enemy['y'] + enemy['height'] and
player['y'] + player['height'] > enemy['y']):
print("TOUCHÉ ! Game Over")
# Option 1 : Arrêter le jeu
# running = False
# Option 2 : Réinitialiser le joueur au centre
player['x'], player['y'] = 600, 400
Pour l'affichage (Fin de votre code précédent)
Voici ce qu'ils devaient compléter pour l'affichage des ennemis dans la boucle :
# Dessiner les ennemis
for enemy in enemies:
pygame.draw.rect(screen, RED, (enemy['x'], enemy['y'], enemy['width'], enemy['height']))
# Mettre à jour l'écran
pygame.display.flip()
pygame.quit()
sys.exit()