Image de Présentation du projet Space Invaders

Jeu - Space Invaders

Bottom Arrow

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