Mini-projet 2 (2025) : «ICMaze»
But
Le but de ce mini-projet est de vous faire pratiquer les éléments de programmation orientée-objets vu au cours du semestre (encapsulation, abstraction, polymorphisme etc.).
Les «jeux de labyrinthes» nous servent de source d'inspiration pour le projet de cette année ... dans des versions modestes (faute de temps) :-).
|
🏆 « Wall of fame » 🏆
Comme chaque année, vous pouviez participer au concours du «Meilleur jeu du CS107».
Toutes les soumissions au concours témoignent d'un travail engagé remarquable. Nous vous en félicitons!!
Classement:
(les noms dans les groupes sont donnés par ordre alphabétique)
- Première place : Fatou Aïdara Ba et Yari Spazzadeschi. Ce projet est très abouti avec de ajouts très bien pensés et substantiels ainsi que des améliorations remarquables au vu des limitations du moteur de jeu. L'ajout d'une évolution scénaristique complémente très agréablement le tout. Bravo !!
- Deuxième place  : Jonatan Pfister et Lohan Rohrbach. Ce projet s'est distingué par l'ajout de nombreux composants non triviaux, par un effort notable sur les graphismes (fait à la main !) et par un final amusant :) Le résultat est particulièrement réussi !
- Troisième place : Anas Bennouna et Othmane Foudali. Ce projet est récompensé pour un effort remarquable sur le visuel et pour une belle mise en valeur des composants requis par le jeu de base en proposant plusieurs mode de jeux. Ces derniers impactent notamment les règles de fonctionnement et la difficulté du jeu. Très bien pensé!
Ce classement s'est fait principalement sur la base de la créativité, de la richesse et la complexité des extensions et/ou la qualité du « Gameplay » ainsi que la mise en valeur des outils mis à disposition.
Deux groupes participant au concours n'occupent pas les 3 premières marches du podium mais méritent absolument une mention spéciale :
- Alyx Cornu et Arthur Delémont pour le codage d'un jeu de Pacman sur la base de la mécanique du moteur de jeu. Il s'agit d'un effort remarquable et très important (fantômes avec leurs algorithmes propres, codage complet du jeu). Ce travail illustre parfaitement les enjeux de l'approche pédagogique adoptée par ce cours (une mécanique codée au bon niveau d'abstraction peut être réutilisée pour produire des résultats sensiblement différents en apparence :)). Il s'agit un peu d'un inclassable toutefois, par manque d'intégration avec le jeu de cette année.
- Vladimir Novikov et Swan Portevin (voir aussi https://youtu.be/c426VZbhAUk) pour de nombreux ajouts et une expérience de jeux particulièrement fluide et agréable. Un petit bémol cependant sur le dossier de candidature qui pêche sur la mise en valeur de tous ces ajouts (attention savoir mettre en valeur tout le travail d'un projet de programmation est un enjeu important dans la «vraie vie» :-)). Dommage que votre magnifique trailer ne nous soit parvenu qu'après délibération du jury ;-)
Nous tenons à féliciter tous les participants du concours, retenus ou pas, pour leur investissement impressionant!
Enfin, il est aussi important de noter que, comme chaque année, certains groupes n'ayant pas participé au concours auraient très clairement mérité une place dans le «Wall of Fame du CS107» :-)
Nous avons voulu ici récompenser l'effort de soumettre au concours et de mettre en valeur son travail.
Félicitations aux lauréats du concours et un très grand BRAVO à toutes et tous!!
Pré-requis et mise en place
Comme pour le tutoriel, il vous est demandé de créer un projet à partir d'une archive. Vous utiliserez l'archive mp2-2025-provided.zip.
Le démarrage du projet est en principe facilité si vous avez réalisé les étapes du
tutoriel sur le matériel fourni.
Si vous n'avez pas eu le temps de faire le tutoriel, il est cependant recommandé de vous lancer directement dans le projet en vous inspirant de la solution fournies dans le dossier
tutos (fourni dans l'archive ci-dessus).
Pour créer un projet IntelliJ à partie de cette archive procédez comme suit :
- téléchargez l'archive ci-dessus dans un répertoire de votre choix;
- dezzipez-la;
- ouvrez le dossier MP2-2025 dans IntelliJ;
- faites confiance au projet fourni :-) (bouton Trust..).
Pour Eclipse, une fois l’archive dezippée créez le projet en utilsant l’option "From existing sources" et en indiquant le répertoire hôte comme racine du projet.
Supprimez l’archive mp2-2025-provided.zip une fois le projet installé.
Rendu
Le rendu est fixé au Jeudi 18 Décembre 13h00. Les instructions détaillées pour le rendu vous seront communiquées en temps voulu.
Le rendu du projet devra comporter :
- le code source de votre projet sous la forme d'une archive ;
- un fichier README documentant l'utilisation de votre programme (comment le lancer, quels contrôles sont programmés et pour quels effets etc.); un exemple de README d'un projet antérieur est disponible ici [Lien]
- un fichier CONCEPTION expliquant dans les grandes lignes vos décisions de conception :
- les éventuelles modifications personnelles que vous avez apportées à l'architecture proposée en les justifiant;
- les classes/interfaces importantes ajoutées et comment elles s'insèrent dans l'architecture;
- le comportement que vous attribuez à chacun des composants introduits si le composant n'est pas demandé ou s'il l'est mais que son comportement est une petite variante de celui suggéré dans l'énoncé.
Ces fichiers seront rédigés de façon succincte et sans formalisme (il ne s'agit pas de rapports). Vous utiliserez un format non propriétaire (pdf, Markdown ou simplement texte, avec une préférence pour les deux derniers formats).
Il vous est aussi demandé de documenter toutes les entêtes de méthodes introduites (à l'image de ce qui est fait par exemple dans le fichier TextGraphics du game-engine).
Si vous souhaitez apporter des modifications fondamentales au matériel fourni (par exemple le codage de l'interface graphique), merci de solliciter notre avis au préalable en envoyant un message à cs107@epfl.ch.
Vous pouvez ajouter des images additionnelles libres de droit (et dont la source est référencée dans le fichier README). Ces images devront être de petite taille car la taille de l'archive à rendre sera limitée (3 MB)).
Au cas où vous avez fait des extensions qui seraient bridées par cette limitation, envoyez nous aussi un message (à cs107@epfl.ch) pour que nous puissions étudier la question au cas par cas.
Enoncé
L'énoncé est à votre disposition ici [Lien].
[An English translation is provided, it was produced by an automatic tool translation then proofread. The reference document is however the French version. In case something is unclear in the English version please refer to the French one or ask questions]
Barème
Il y a quatre étapes à compléter pour la partie obligatoire de ce mini-projet.
La grille ci-dessous vous donne la répartition des points par étape.
Les modalités est critères de correction vous sont expliqués ici.
|
Maximum possible sur 6 |
Aspects généraux (documentation, README, CONCEPTION)
|
1.5
|
«ICMaze» de base (étape 1)
|
3.5
|
Labyrinthes (étape 2)
|
4.5
|
Niveaux et ennemis (étape 3)
|
5.5
|
Défi final (étape 4)
|
6.0
|
Extensions à choix (étape 5, bonus/concours)
|
(bonus, max 20 points)
|
Fixez-vous des objectifs raisonnables en fonction de votre niveau.
Important:
Le projet est un élément noté. L'échange d'idée entre groupes ou avec des tiers est autorisée et
même recommandée. Par contre, l'échange
de code est strictement interdit ! Le plagiat de code, quelqu'en soit la source et qui sera contrôlé, sera
considéré comme de la tricherie.
En cas de tricherie, vous recevrez la note «NA» (voir également l'ordonnance sur la discipline).
Dans tous les cas, il est fortement conseillé de pouvoir
expliquer les lignes de code de son projet.