GalagaWars est une implémentation simple d'un jeu de tir spatial inspiré de Galaga, où le joueur contrôle un vaisseau pour combattre des vagues d'ennemis et un boss final, développé par deux étudiantes dans le cadre du cours de L2 Informatique Conception et Développement d'Applications(LIFAPCD) à l’Université Claude Bernard Lyon 1.
Ce projet est écrit en C++ dans un style clair et accessible pour un étudiant de niveau L2. Il a également pour objectif d’illustrer l’utilisation d’outils courants dans le développement logiciel tels que Git, Doxygen, Valgrind, etc.
Le jeu peut être compilé sous Linux, Windows, MacOs ou via la ligne de commande et des IDE comme CodeBlocks, Visual Studio Code.
Pour plus d’informations: 👉 https://forge.univ-lyon1.fr/p2303609/galagawars.git
Contributeures :
- 12303609 THI HANH TRUONG
- 12304387 SERINE MATEMATI
License : Ce projet est distribué sous la licence MIT / GNU GPL
L’archive du projet GalagaWars est structurée comme suit :
-
Galagawars/src: Contient le code source.-
src/core : Classes de base du jeu (Jeu, Vaisseau, Ennemi, Terrain, Projectile).
-
src/txt : Code pour la version texte, incluant la classe WinTXT pour gérer l’affichage console et les événements clavier.
-
src/sdl2 : Code pour la version graphique avec SDL2.
-
-
Galagawars/doc: Contient le fichier Doxygen pour générer la documentation du code. -
Galagawars/data: Contient les ressources comme les images ou sons (si disponibles). -
Galagawars/bin: Répertoire où les exécutables sont générés (GalagaWars_txt, GalagaWars_sdl). -
Galagawars/obj: Répertoire pour les fichiers intermédiaires (.o) générés lors de la compilation.
-
Compiler le projet
make make docu doxygen doc/doxyfile
-
Exécuter un des programmes
-
.Version texte:./bin/GalagaWars_txt
Cette version affiche le jeu dans la console avec des caractères ASCII. Utilisez les touches W, A, S, D pour déplacer le vaisseau (W : haut, S : bas, A : gauche, D : droite). Appuyez sur P pour mettre en pause/reprendre et Q pour quitter.
-
.Version SDL2:./bin/GalagaWars_sdl
Cette version affiche une interface graphique. Utilisez les touches fléchées pour déplacer le vaisseau (haut, bas, gauche, droite) ou activez le contrôle par souris en appuyant sur M pour basculer entre clavier et souris. Appuyez sur P pour mettre en pause/reprendre, Q pour quitter, et F pour basculer en mode plein écran.
-
Nettoyer les fichiers compilés
make clean
- Compiler le projet
cd build cmake .. make - Exécuter un des programmes
.Version texte:./GalagaWars_txt
.Version SDL2:./GalagaWars_sdl
-
GalagaWars_txt : Une version console du jeu où les éléments sont représentés par des caractères ASCII dans une arène entourée de bordures (#). Le vaisseau du joueur est affiché comme un 'V', les ennemis comme 'N' (normal), 'R' (rapide), 'C' (capturant), 'B' (boss), ou 'F' (autre type). Les projectiles du vaisseau sont des '|' et ceux des ennemis des '*'. Le score est affiché en haut à gauche sous la forme "Score: [nombre]". Le joueur contrôle le vaisseau pour détruire des vagues d’ennemis, puis un boss final, avec pour objectif de survivre et vaincre le boss.
-
GalagaWars_sdl : Une version graphique utilisant SDL2, avec des sprites pour représenter le vaisseau, les ennemis (normaux, rapides, capturants, boss), et les projectiles. Le score et la vie du vaisseau sont affiché à l’écran, et le gameplay est identique à la version texte, mais avec un rendu visuel amélioré. Un écran de victoire s’affiche après avoir vaincu le boss (fond blanc avec le texte vert "You Win! Score: [nombre]"), et un écran de défaite apparaît si le joueur perd toutes ses vies (fond noir avec "Game Over! Score: [nombre]").
-
Compilez le programme de test :
g++ -Wall -ggdb -std=c++17 -o test_vaisseau src/core/test_vaisseau.cpp src/core/Vaisseau.cpp src/core/Terrain.cpp src/core/Projectile.cpp
-
Exécutez le programme :
./test_vaisseau
-
Compilez le programme de test :
g++ -Wall -ggdb -std=c++17 -o test_jeu src/core/test_jeu.cpp src/core/Jeu.cpp src/core/Terrain.cpp src/core/Vaisseau.cpp src/core/Ennemi.cpp src/core/Projectile.cpp
-
Exécutez le programme :
./test_jeu