Vidéo de démonstration : https://youtu.be/L0TqmwFEOVk
Ce projet implémente une version du jeu Pengo en Java, avec un moteur générique, un modèle de jeu, une vue avec viewport, des sprites, des collisions et des automates/bots GAL pour les ennemis.
Projet réalisé en équipe de 6 étudiants dans le cadre du Projet Logiciel en Équipe (PLE) de l'Université Grenoble Alpes. Le framework graphique ws/given.jar a été fourni par l'équipe pédagogique.
Prérequis : un JDK.
Depuis le dossier ws :
cd ws
javac -d bin -cp given.jar $(find Pengo -name '*.java' -not -path '*/tests/*')
java -ea -cp "bin:given.jar" pengo.PengoMainLe jeu doit être lancé depuis ws/ pour trouver les ressources dans ws/Asset/.
Au lancement, le jeu affiche un menu de sélection de carte.
Cartes disponibles :
Classic
Torus
Big ViewPort
Contrôles du menu :
| Touche | Action |
|---|---|
| Flèche haut/Z | Monter dans le menu |
| Flèche bas /S | Descendre dans le menu |
| Entrée | Valider la carte choisie |
Après validation, la carte sélectionnée est chargée depuis le dossier :
ws/Asset/rsrc/maps/
| Touche | Action |
|---|---|
| Flèche haut / Z | Aller vers le haut |
| Flèche bas / S | Aller vers le bas |
| Flèche gauche / Q | Aller vers la gauche |
| Flèche droite / D | Aller vers la droite |
| Espace | casser le bloc devant Pengo |
| Échap | Ouvrir le menu pause |
Pendant le jeu, appuyer sur :
Échap
ouvre le menu.
Options possibles :
Reprendre
Recommencer
Quitter
Contrôles du menu :
| Touche | Action |
|---|---|
| Flèche haut / Z | Monter |
| Flèche bas / S | Descendre |
| Entrée / Espace | Valider |
| Q | Quitter |
| R | Recommencer directement |
Le joueur contrôle Pengo. Le but est de survivre, d'éliminer les ennemis et d'utiliser les blocs de glace.
Fonctionnalités principales :
- Pousser des blocs de glace.
- Écraser les ennemis avec un bloc glissant.
- Casser les blocs abîmés.
- Traverser un bloc très abîmé avec ralentissement.
- Utiliser les bonus.
- Gagner avec l'alignement des DiamondBlocks ou si tous les ennemis sont morts.
engine/ moteur générique du jeu
geometry/ grille, coordonnées et vecteurs
collision/ formes et tests de collision
model/ entités et modèle générique
gal/ actions, conditions et automates GAL
pengo/ logique spécifique au jeu Pengo
view/ affichage, viewport, avatars et overlays
Asset/ cartes, sprites et configuration
Le moteur reste générique : il ne connaît pas les règles spécifiques de Pengo. La logique du jeu Pengo est placée dans le package :
pengo
Cela permet de séparer clairement le moteur général, le modèle du jeu, les collisions, les automates et l'affichage.