Cascadia - Jeu de Stratégie

Implémentation complète du jeu de plateau Cascadia avec interface graphique et modes de jeu multiples

JavaMVCZen6Apache AntPOOAlgorithmes de Graphes
Voir le code
Projet académique réalisé dans le cadre du cours de Programmation Orientée Objet à l'Université Gustave Eiffel. L'objectif était de recréer numériquement Cascadia, un jeu de société créé par Randy Flynn, basé sur la pose de tuiles et le draft de jetons dans l'écosystème du nord-ouest du Pacifique. Le projet implémente l'intégralité des mécaniques du jeu original avec trois modes d'interface : mode terminal avec tuiles carrées, mode graphique avec tuiles carrées, et mode graphique avec tuiles hexagonales fidèle au jeu physique. L'architecture MVC garantit une séparation claire entre logique métier, affichage et contrôleur. Le système gère 1 à 4 joueurs, la validation des placements, le système de scoring complexe avec plusieurs variantes, et un système d'achievements pour suivre la progression.

Modes de Jeu et Interfaces

Modes de Jeu et Interfaces 1
Modes de Jeu et Interfaces 2
Le projet propose trois interfaces : mode terminal (tuiles carrées), mode graphique avec tuiles carrées, et mode graphique hexagonal via Zen6. Cette variété permet de tester rapidement la logique côté terminal et de proposer une version visuelle fidèle côté graphique. Le rendu gère les textures d’habitats, l’affichage des jetons, la rotation des tuiles et la mise à jour des scores en temps réel.

Mécanique de Pose de Tuiles

Mécanique de Pose de Tuiles 1
Mécanique de Pose de Tuiles 2
Le placement des tuiles est géré par une grille carrée et une grille hexagonale. La logique de voisinage est différente selon le mode et s’appuie sur des coordonnées adaptées (axiales pour l’hexagonal). Le système gère la rotation des tuiles, le rendu des connexions et les vérifications nécessaires pour conserver un plateau cohérent.

Système de Jetons Animaliers

Les jetons sont gérés comme des entités distinctes avec types et états. Le moteur associe un jeton à une tuile et met à jour l’affichage en temps réel. Cette partie couvre la gestion des stocks de jetons, leur placement sur le plateau et leur prise en compte dans le calcul du score.

Système de Scoring Avancé

Le calcul des scores est isolé dans un module dédié. Il parcourt le plateau, identifie les groupes et agrège les points selon les critères du jeu. Les algorithmes sont organisés par catégorie pour garder un code lisible et facile à tester.

Architecture MVC et Code

L'architecture suit rigoureusement le pattern Modèle-Vue-Contrôleur. Le package modele contient les classes métier : Tuile, Jeton, Plateau, Joueur, Partie. Chaque tuile stocke ses habitats en bitfield compact, les jetons référencent leur espèce via enum. Le plateau maintient une HashMap<Coordonnee, Tuile> pour accès O(1). La Vue gère l'affichage : VueTerminale pour mode texte, VueGraphiqueCarree et VueGraphiqueHexagonale pour Zen6. Le contrôleur Cascadia orchestre les tours : pioche, sélection, validation placement, calcul scores. Les règles sont encapsulées dans ReglesCascadia avec méthodes statiques. Apache Ant automatise la compilation et création du JAR exécutable. Le projet totalise ~3500 lignes de Java réparties en 25 classes avec Javadoc complète.

Liens utiles

Pour comprendre le jeu et tester une version en ligne :