Space Invaders
Remarque
Requis : session 7 terminée.
Les aliens sont en formation de 4×9. Ils vont et viennent, descendent d’un cran à chaque bord et tirent au hasard en retour. Toi, tu as un seul vaisseau et trois vies. Abats-les tous avant qu’ils n’atterrissent.
Démarrage
Télécharge le code de départ et décompresse le ZIP. Ouvre main.py dans Thonny et clique sur Run. Tu vois le vaisseau et la formation d’aliens. Les commandes et les images sont déjà en place. C’est toi qui remplis le déplacement, les tirs et les collisions.
Comment ça marche ?
Tous les aliens sont des objets pygame.Rect dans une seule liste. À chaque frame, tu les déplaces tous du même nombre de pixels. Si la formation touche un bord, tu inverses la direction et tu fais descendre chaque alien de ALIEN_VAL pixels.
for alien in aliens:
alien.x += snelheid * alien_richting
rechts = max(a.right for a in aliens)
links = min(a.left for a in aliens)
if rechts >= BREEDTE or links <= 0:
alien_richting *= -1
for alien in aliens:
alien.y += ALIEN_VALLes projectiles sont aussi des objets pygame.Rect. Les projectiles du joueur montent (k.y -= KOGEL_SNL), ceux des aliens descendent (k.y += ALIEN_SNL). Tu vérifies les collisions avec k.colliderect(alien).
✅ Basic
- Dessine l’arrière-plan (utilise
random.seed(42)pour des étoiles fixes), le vaisseau et tous les aliens. - Déplace le vaisseau à gauche et à droite avec les flèches.
- Fais aller et venir la formation et descends d’un cran quand elle touche un bord.
- Tire un projectile vers le haut quand le joueur appuie sur espace. Utilise
COOLDOWN_MSpour éviter de tirer à toute vitesse.
⭐ Stretch
- Le projectile du joueur touche un alien : supprime les deux, score += 10.
- Chaque alien tire au hasard en retour :
if random.random() < SCHIET_KANS. - Un projectile alien touche le joueur : levens -= 1, à 0 vie → game over.
- Affiche le score et les vies en haut à gauche.
🔥 Expert
- La formation accélère à mesure qu’il reste moins d’aliens :
1 + 3 * (1 - restant). De 1 pixel/frame au début à 4 pixels/frame avec le dernier alien. - Game over si un alien atteint le bas (
alien.bottom >= HOOGTE - 50). - Game over (gagné) si la liste est vide.
- Redémarrage avec R : réinitialise toutes les variables avec une fonction
reset().
Téléchargements
- Code de départ :
main.pyavec la fenêtre, les images et la grille d’aliens prêtes ; c’est toi qui remplis la logique. - Images : ship.png, enemy.png et laser.png si tu commences sans le code de départ.
Images : Kenney Space Shooter Redux, CC0 (domaine public). kenney.nl