Ce projet était à la base un projet tutoré de fin de première année de DUT Informatique. Ce projet n'avait malheuresement pas abouti, et c'est donc plus tard, sur mon temps libre, que j'ai décidé de refaire entièrement le projet, en repartant de zéro.
Splendor est un jeu qui se joue à tour de rôle. À chaque tour, le joueur peut soit prendre
des jetons (3 d'une couleur différente ou 2 de la même couleur), soit acheter une carte grâce
à ses jetons.
Une fois une carte achetée, celle-ci donne au joueur un jeton permanent de la couleur de la carte,
ce qui lui permettra d'acheter des cartes de plus en plus chères (mais qui donnent davantage de points).
Le joueur qui gagne est le premier à atteindre 15 points.
Tout d'abord, comme le projet est tout de même assez important, il était essentiel de
s'organiser, avec une arborescence de fichier claire.
J'ai pour cela séparé l'ensemble des fichiers avec des extensions .java de tout le reste (les fichiers de données, les images, et les fichiers compilés).
J'ai choisi de créer mon projet en me basant sur un modèle MVC, pour bien séparer les différentes parties de mon application.
Voir le diagramme en format pdf
Lorsque l'on exécute Splendor.exe, celui-ci va recompiler l'ensemble du projet, et
lancer le fichier Controleur. Ce dernier va créer le plateau et les deux joueurs.
Après cela, le plateau va générer l'ensemble des cartes qui seront présentent sur le plateau
grâce au fichier cartes.txt (qui contient sur chaque ligne l'ensemble des données nécessaires
à la création d'un objet Carte).
Le contrôleur va également initier la création des cartes nobles, à l'aide d'une classe qui fonctionne approximativement comme la classe creerCartes (voir extrait de code ci-dessus).
Une fois tout cela terminé, les cartes et les nobles seront mélangés, et placés sur le plateau, pour arriver au résultat ci-dessous.
À chaque tour, le joueur dont c'est le tour (fenêtre non bloquée), aura le choix entre plusieurs actions :
- Prendre trois jetons, en cliquant sur trois jetons différents du plateau
- Prendre deux jetons d'une même couleur (possible que s'il reste au moins 4 jetons de cette couleur sur le plateau)
- Dépenser ses jetons pour acheter une carte
- Réserver une carte, et piocher un jeton or
Dès que le joueur "actif" termine son tour, la classe Plateau va appeler la méthode
finirTour.
Celle-ci va tout d'abord regarder si le joueur a les cartes suffisantes pour pouvoir obtenir un noble.
Cette méthode marche grâce à la récursivité. Cela me permet de ne gérer qu'une méthode (sans cela,
j'aurais dû utiliser un tableau pour stocker des variables booléennes vérifiant
si le joueur avait bien le nombre de cartes nécessaire,
et de vérifier par la suite que toutes les valeurs du tableau était à true).
Puis, elle va regarder si le joueur possède le nombre de points suffisants pour gagner. Si ce n'est pas le cas,
la partie met fin au tour du joueur, et donne la main au joueur suivant.
Le dossier téléchargeable contient une ancienne version du jeu, où certaines
fonctionnalités ne sont pas présentes et où certains bugs peuvent être présents.
Je travaille sur une version finale, qu'il sera possible de télécharger lorsqu'elle
sera terminée.