Space Invaders - Pygame

Téléchargez le code source complet et apprenez à créer ce jeu emblématique.

Découvrez le jeu

Space Invaders est un jeu d'arcade créé en 1978 par Tomohiro Nishikado. Dans ce jeu captivant, le joueur prend le contrôle d'un canon laser placé en bas de l'écran et doit défendre la Terre contre des vagues incessantes d'extraterrestres.

Ces envahisseurs se déplacent latéralement et descendent progressivement, menaçant de plus en plus notre planète. Le joueur doit habilement détruire les ennemis en tirant des projectiles tout en esquivant leurs tirs. À mesure que le joueur élimine les extraterrestres, leur vitesse augmente, rendant le défi encore plus intense.

Le jeu se termine si les envahisseurs atteignent le bas de l'écran ou si le joueur perd toutes ses vies. Avec son gameplay addictif et son influence durable, Space Invaders a marqué l'histoire des jeux vidéo et reste une référence incontournable du genre.

Téléchargez le code source

Téléchargez le code

Faire tourner le jeu

Si vous souhaitez faire tourner ce jeu sur votre machine, voici plusieurs prérequis à respecter :

Si ces critères sont remplis, vous pouvez alors lancer le fichier space_invaders.py et commencer à jouer.

Principaux Changements

Nouveautés Générales

Mode Campagne

Musique et Sons

Graphismes et Effets

Droits d'Auteurs et Crédits

Pour la création de ma version revisitée de Space Invaders, j'ai utilisé diverses ressources pour enrichir l'expérience de jeu. Les images ont été générées à l'aide de l'intelligence artificielle Midjourney, offrant ainsi un visuel unique et moderne. Les effets sonores proviennent de Pixabay, une plateforme reconnue pour ses ressources audio libres de droits, tandis que les musiques qui accompagnent le jeu sont issues de Soundraw, un service qui permet de créer des morceaux personnalisés et originaux.

Je tiens à préciser que toute modification ou redistribution de mon projet doit impérativement mentionner mon nom dans les crédits pour le code source. Par ailleurs, la revente de ce jeu, sous quelque forme que ce soit, est strictement interdite. Mon objectif est de partager cette création avec la communauté Open Source, tout en respectant les contributions et efforts investis dans ce projet.

En respectant ces conditions, vous contribuez à valoriser le travail collaboratif et à préserver l'esprit de partage qui anime la communauté des développeurs. Merci de votre compréhension et de votre soutien.

Structures du projet

Dans cette section, je vais vous présenter la structure de mon projet Space Invaders revisité, en expliquant le fonctionnement du code et l'utilité des différentes classes et méthodes. Cette documentation vise à vous fournir une compréhension approfondie de l'architecture du jeu, facilitant ainsi toute modification ou contribution future.

Organisation du Code

Le projet est structuré principalement autour du fichier space_invaders.py, qui constitue le cœur de la boucle de jeu, et du module space, qui contient les classes et méthodes nécessaires pour le fonctionnement du jeu. Voici un aperçu des principaux composants et de leur rôle :

Détails des Classes et Méthodes

Fichier space_invaders.py

Le fichier space_invaders.py initialise le jeu, gère les événements et maintient la boucle principale. Voici une explication détaillée de son contenu et de son fonctionnement :

Initialisation
                
                import sys
                sys.dont_write_bytecode = True
                import pygame
                import space
                import sys
                
                

Ces lignes importent les modules nécessaires et empêchent la création de fichiers bytecode (.pyc).

Paramètres du jeu
                
                WIDTH = 800
                HEIGHT = 600
                FPS = 60
                
                

Définition des paramètres de la fenêtre de jeu.

Lancement des modules de pygame
                
                pygame.init()
                clock = pygame.time.Clock()
                
                

Initialisation de Pygame et création d'un objet clock pour gérer le temps.

Création de la fenêtre
                
                screen = pygame.display.set_mode((WIDTH, HEIGHT))
                pygame.display.set_caption("Space Invaders")
                
                

Création de la fenêtre de jeu avec les dimensions spécifiées et définition du titre.

Instantiation de la classe Jeu
                jeu = space.Jeu(screen, WIDTH, HEIGHT, FPS)
                

Création d'une instance de la classe Jeu définie dans space.py.

Boucle de jeu
                
                while True:
                    ...
                
                

La boucle principale du jeu gère les événements, met à jour l'état du jeu et rend les objets à l'écran. Voici quelques éléments clés de cette boucle :

Fond de la fenêtre
                    
                    if (jeu.scene not in ['transition', 'ending', 'free_death', 'campaign_death']) and (jeu.bg_stop is False):
                        jeu.screen.blit(jeu.background(), (0, 0))
                    
                

Affiche le fond de la fenêtre sauf dans certaines scènes spécifiques.

Gestion des événements
                    
                    for event in pygame.event.get():
                        if event.type == pygame.QUIT:
                            sys.exit()
                        elif event.type == pygame.KEYDOWN:
                            ...
                    
                

Gère les événements de fermeture de la fenêtre, les entrées clavier et souris.

Mise à jour de la scène
                
                if jeu.scene == 'home':
                    jeu.home()
                elif jeu.scene == 'levels':
                    jeu.levels()
                elif jeu.scene in ['campaign_menu', 'free_menu']:
                    jeu.ingame_menu()
                elif jeu.scene in ['campaign', 'free']:
                    ...
                elif jeu.scene == 'transition':
                    jeu.world_transition()
                elif jeu.scene == 'ending':
                    jeu.ending()
                elif jeu.scene in ['campaign_death', 'free_death']:
                    ...
                
                

Met à jour et affiche les différentes scènes du jeu en fonction de l'état actuel.

Rendu et mise à jour de l'écran
                pygame.display.update()
                clock.tick(FPS)
                

Met à jour l'affichage et contrôle le taux de rafraîchissement du jeu.

Fichier space.py

Le fichier space.py contient les classes et méthodes nécessaires pour les différents éléments du jeu. Voici un aperçu des classes principales et de leurs méthodes :

Classe Jeu
Classe Player
Classe Ennemi
Classe Tir
Classe Boss
Classe Effect

Mes Principaux Projets

space_invaders/icon.webp

Space Invaders - Pygame

Mon projet de programmation du jeu Space Invaders. Téléchargez le code source complet et apprenez à créer ce jeu emblématique.

Accéder
co_parilly/icon.webp

Co - Parilly

L'application ultime pour les amateurs de course d'orientation dans le parc de Parilly.

Accéder