Projet Splendor

Le jeu Splendor

Le but de ce projet est de réaliser une version PC offline d’un jeu de société : Splendor. Il s’agit d’un jeu de stratégie où plusieurs joueurs s'affrontent pour asseoir leur contrôle sur le commerce des pierres précieuses.

Le jeu

La règle détaillée du jeu Splendor est disponible en ligne. Nous vous invitons à la lire avec attention, puisqu'il s'agit du jeu que vous allez devoir programmer.

Conseils

Les différentes étapes du projet

Vous allez réaliser votre jeu en 4 phases. Chaque phase devra être terminée et fonctionnelle avant de passer à la phase suivante.

Phase 1 : La base

Dans un premier temps, vous devez réaliser une version simplifiée du jeu, avec uniquement un mode de jeu permettant à deux joueurs humains de jouer l'un contre l'autre, avec un affichage en ligne de commande. Dans cette version simplifiée :

Phase 2 : Le jeu complet

Une fois la phase 1 terminée, vous devez réaliser le jeu complet, permettant de faire jouer de deux à quatre joueurs humains, toujours avec un affichage en ligne de commande :

Vous devrez donc trouver une manière adaptée de laisser à l'utilisateur le choix entre la version de base du jeu et la version complète.

Phase 3 : Affichage graphique

Une fois la phase 2 terminée, mettez en place une interface graphique simple, utilisant la bibliothèque Zen5 fournie avec ce sujet. L'utilisateur devra pouvoir choisir entre cette interface graphique et la ligne de commande.

La vraie difficulté de cette dernière étape et d'arriver à factoriser au maximum le code entre l'affichage graphique et l'affiche dans le terminal. Il faudra donc séparaer au maximum:

  • l'état du plateau de jeu,
  • l'affichage
  • la gestion des actions du joeur.

C'est plus ou moins le principe derrière le design-pattern MVC. L'idée sera de faire en sorte d'introduire un interface Java commune pour traiter les deux façons d'afficher de manière uniforme.

Organisation

Le projet est à réaliser en binôme du même groupe sauf dérogation explicite des enseignants. Vous devez respecter le fait de ne jamais faire deux projets avec le même binôme.

Nous vous conseillons de choisir un binôme avec un niveau en Java et niveau de motivation proches du votre. En effet, les notes de projet sont différenciées pour les membres d'un même binôme en fonction de la soutenance.

Vos délégués doivent remonter aux enseignants la liste des binômes aux enseignants pour le 4 avril 2025 à midi.

Evaluation et rendus

Seules les soutenances sont évaluées. Nous évaluons votre maitrise du projet et pas le code du projet.

Les deux membres du projet doivent maitriser l'intégralité du codde dans les détails. Si vous êtes dans l'incapacité d'expliquer vos choix pendant la soutenance, votre note sera réduite même si le code du projet est excellent.

Contraintes techniques

Votre projet devra respecter les contraintes suivantes:

Rendu soutenance intermédiaire

Le rendu intermédiaire devra consister en une archive au format \texttt{zip} contenant:

Rendu soutenance finale

Le rendu final devra consister en une archive au format \texttt{zip} contenant:

Cette archive aura pour nom Nom1_Nom2_Splendor.zip, où les noms sont ceux des membres du binôme par ordre alphabétique. L'extraction de cette archive devra créer un répertoire intitulé Nom1_Nom2_Splendor et contenant tous les éléments demandés ci-dessus.

Zen 6

Pour l'affichage, on vous demande d'utiliser la bibilothèque Zen 6.

Le site contient la documentation de la librairie. Mais pour vous aider, nous vous fournissons un mini exemple très incomplet de code utilisant cette bibliothèque ici. L'application essaie de montrer un peu comment le design-pattern MVC peut être mis en place.

Attention à bien appeler la méthode render une seule fois par frame du jeu, pas plus sinon votre jeu va se transformer en sapin de noël clignotant.