Mini-projet 2 (2024) : «ICoop»
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 type «Fire Boy and Water Girl» nous servent de source d'inspiration très directe pour le projet de cette année ... dans des versions sensiblement moins ambitieuses (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!!
Cette année nous avons eu beaucoup de mal à départager certaines candidatures sur la quinzaine de dossiers reçus.
Aussi, il a fallu serrer certains groupes sur les marches du podium :)
Classement:
(les noms dans les groupes et pour les groupes ex-aequo sont donnés par ordre alphabétique)
- Première place (ex-aeqo) : Hedi Kharouf et Adam Negra ainsi que Younes Laribi et Karam Fakhouri : le premier est un projet très abouti avec un nombre d'ajouts bien pensés substantiel, des améliorations remarquables du Gameplay et beaucoup de finition. Le second comporte aussi de nombreuses extensions dont une particulièrement originale (et impressionante) consistant à utiliser des algorithmes génétiques pour identifier les décisions optimales à prendre par les personnages.
- Deuxième place  : Adam Hefaiedh et Rania Ben Ayed: ce projet s'est distingué par des extensions non triviales et nombreuses et une belle évolution scénaristiques avec de nouvelles salles.
- Troisièmes place (ex-aeqo) : Constantin Hetet et Gaspard Archer et Aylin Leblebici et Kiral Kranda: pour un bel effort sur le visuel et la fluidité du jeu et de nombreux ajouts ainsi Evgeny Vereshchagin et Andréa Maalouf pour une approche conceptuelle très réfléchie et des ajouts non triviaux.
Le classement s'est fait principalement sur la base de la créativité, de la richesse des extensions et/ou la qualité du « Gameplay » ainsi que la mise en valeur des outils mis à disposition.
Nous tenons aussi à féliciter tous les participants qui avec des extensions un (tout petit) peu plus modestes ont obtenu une note impressionante pour la bonne qualité de leur code.
Enfin, 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!!
Description générale et énoncé
Il s'agit dans ce mini-projet de mettre en oeuvre divers composants permettant d'implémenter des jeux se déroulant sur des grilles. Il s'agit cette année d'implémenter des jeux de type «Fire Boy and Water Girl» où deux personnages doivent coopérer pour affronter l'adversité et réussir la partie (voir ici un exemple de résultat possible).
Le projet sera réalisé par groupes de deux personnes (il est possible de le faire seul si vous le souhaitez, mais ça n'est pas encouragé au vu de la charge de travail).
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-2024-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;
- ouvrez le dossier MP2-2024;
- 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-2024-provided.zip une fois le projet installé.
Rendu
Le rendu est fixé au Jeudi 19 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 HELP documentant l'utilisation de votre programme (comment le lancer, quels contrôles sont programmés et pour quels effets etc.); un exemple de HELP 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 HELP). Ces images devront être de petite taille car la taille de l'archive à rendre sera limitée (4 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]
« Wall of fame » 🏆
Pour participer au concours du «Meilleur jeu du CS107» consultez la section 6 de l'énoncé du projet. Les gagnants verront leur nom s'afficher sur le « Wall of fame » (+ une petite attention symbolique).
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
|
«ICoop» de base (étape 1)
|
3
|
Première coopération (étape 2)
|
4.5
|
Adversaires et batailles (é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, 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.