Aller au contenu
Tous les projets

Jeu · Projet universitaire · Master 1, Université Savoie Mont Blanc

Battle Arena

Survivre aux vagues d'ennemis

Capture d'écran de Battle Arena

Jeu d'arène 2D en C++20 avec SFML, inspiré des « survivors ». Le joueur se déplace sur une carte infinie, tire automatiquement sur l'ennemi le plus proche et doit tenir face à des vagues de plus en plus nombreuses, puis à un boss.

Le jeu

Un « battle arena » en vue de dessus : le joueur se déplace aux flèches sur une carte qui se répète à l’infini. Les ennemis arrivent par vagues, le tir est automatique, et il faut tenir le plus longtemps possible.

  • Vagues de plus en plus fournies (100 ennemis, puis 1,5 fois plus à chaque vague), avec plusieurs comportements de déplacement
  • Ennemis à 1, 2 ou 3 points de vie ; un boss à partir de la deuxième vague, plus lent mais qui retire toute la vie d’un coup
  • Cinq cœurs, une régénération après quelques secondes sans dégât
  • Deux sphères en orbite autour du joueur, débloquées à la deuxième vague, qui blessent les ennemis au contact
  • Chronomètre, compteur d’ennemis restants, écran de fin et bouton pour rejouer, musique de fond

Technique

C++20 orienté objet : Game (boucle, rendu, interface), Player (singleton), Enemy et EnemyFactory (apparitions et vagues), Boss, Bullet, OrbitingSphere. Les ennemis sont partagés par std::shared_ptr. Le rendu, les entrées et la musique passent par SFML 2.6, et le projet se construit avec CMake.

En images

Une partie de la première vague, du lancement au Game Over (34 secondes, sans le son).
Le tir part tout seul vers l'ennemi le plus proche ; le joueur ne gère que ses déplacements.
Le tir part tout seul vers l'ennemi le plus proche ; le joueur ne gère que ses déplacements.
Les goules apparaissent hors de l'écran, tout autour du joueur, et convergent vers lui.
Les goules apparaissent hors de l'écran, tout autour du joueur, et convergent vers lui.
L'écran de fin, avec le temps de survie, la vague atteinte et un bouton pour rejouer.
L'écran de fin, avec le temps de survie, la vague atteinte et un bouton pour rejouer.