4. ÉTAPE 3 : Ajouter des ennemis

Objectif

L'élève crée 2-3 ennemis qui se déplacent automatiquement à l'écran.

Question motivante

"Un jeu sans adversaires, c'est ennuyeux. Comment créer des ennemis qui se déplacent seuls ?"

 Concepts clés à maîtriser

  1. Les listes : stocker plusieurs ennemis

  2. Les dictionnaires : regrouper les propriétés d'un ennemi (x, y, vx, vy)

  3. Les boucles : parcourir et afficher tous les ennemis

  4. Mouvement autonome : ennemis qui se déplacent sans intervention

  5. Rebond aux murs : inverser la direction quand on touche les limites

Code à compléter


python
import pygame import sys pygame.init() WIDTH, HEIGHT = 1200, 800 screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("Zelda avec Python") BLACK, BLUE, RED = (0, 0, 0), (0, 0, 255), (255, 0, 0) # ===== JOUEUR ===== player = { 'x': 600, 'y': 400, 'width': 40, 'height': 40, 'speed': 5 } # ===== ENNEMIS ===== enemies = [ { 'x': 200, 'y': 200, 'width': 40, 'height': 40, 'vx': 3, # Vitesse horizontal (positif = vers la droite) 'vy': 0 # Vitesse vertical }, { 'x': 1000, 'y': 600, 'width': 40, 'height': 40, 'vx': -3, 'vy': 0 }, { 'x': 600, 'y': 100, 'width': 40, 'height': 40, 'vx': 0, 'vy': 2 # Se déplace vers le bas } ] # ===== BOUCLE PRINCIPALE ===== running = True clock = pygame.time.Clock() while running: clock.tick(60) # 60 fps (images par seconde) for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # ===== DÉPLACEMENT DU JOUEUR ===== keys = pygame.key.get_pressed() if keys[pygame.K_UP]: player['y'] -= player['speed'] if keys[pygame.K_DOWN]: player['y'] += player['speed'] if keys[pygame.K_LEFT]: player['x'] -= player['speed'] if keys[pygame.K_RIGHT]: player['x'] += player['speed'] # ===== DÉPLACEMENT DES ENNEMIS ===== for enemy in enemies: enemy['x'] += enemy['vx'] enemy['y'] += enemy['vy'] # Rebondir aux murs horizontalement if enemy['x'] < 0 or enemy['x'] + enemy['width'] > WIDTH: enemy['vx'] *= -1 # Rebondir aux murs verticalement if enemy['y'] < 0 or enemy['y'] + enemy['height'] > HEIGHT: enemy['vy'] *= -1 # ===== AFFICHAGE ===== screen.fill(BLACK) # Dessiner le joueur pygame.draw.rect(screen, BLUE, (player['x'], player['y'], player['width'], player['height'])) # Dessiner les ennemis for enemy in enemies: