Introduction
Dans le cadre du module de Conception et Programmation Orientée Objet, nous avons réalisé un projet complet consistant à développer un jeu de stratégie en Java, intitulé Jeu de Château. Ce jeu oppose deux joueurs sur un plateau de 7x13 cases, où chacun doit protéger son château tout en tentant de capturer celui de l'adversaire ou d'éliminer l’ensemble de ses pièces.
Ce projet avait pour objectif principal de mobiliser et approfondir nos compétences en programmation orientée objet, notamment à travers la création et l’interaction de classes, l’héritage, la gestion des événements et la manipulation d’une interface graphique en Java avec Swing. Il a également constitué une opportunité concrète d’appliquer des concepts essentiels tels que la gestion de la logique métier, la modélisation d’un plateau de jeu, le contrôle des déplacements et la mise en place de conditions de victoire.
Au fil du développement, nous avons aussi travaillé sur l’implémentation de fonctionnalités avancées : interface graphique interactive, système de sauvegarde/chargement, gestion d’une intelligence artificielle basique et visualisation des actions du joueur. Ce projet nous a donc permis de lier conception logicielle, ergonomie et réflexion algorithmique dans une réalisation complète et fonctionnelle.
Présentation
Nous avons modélisé le jeu en Java avec une architecture orientée objet : une classe mère Piece (pion) et une sous‑classe Cavalier qui prend en compte les déplacements en « L » supplémentaires.
En utilisant différentes classe on gère les mouvements, les captures par saut et les conditions de victoire (prise du château adverse ou élimination de toutes les pièces).
Le plateau est une matrice 7×13 de Piece, initialisée puis parcourue pour l’affichage et les vérifications de limites.
On se sert de l'interface Swing afin de créer les différentes fiches telles que FAccueil (choix du mode, tirage des couleurs, pseudos) et PlateauJeu (grille cliquable, mise en surbrillance, boutons de directions et mouvements du cavalier).
Chaque clic sélectionne une pièce, puis un bouton de direction calcule newX/newY, valide le mouvement (bornes, occupation, couleur) et applique la capture si nécessaire.
Un système de sauvegarde/chargement enregistre les joueurs et pièces (type, couleur, coordonnées) pour reprendre une partie, tout cela grâce au Json.
Le mode contre ordinateur implémente une IA simple : à la fin du tour, elle évalue des distances vers les pièces adverses et choisit un déplacement orthogonal pour se rapprocher.
Enfin, nous avons travaillé sur l’ergonomie (icônes, alternance des tours, messages) et listé des pistes d’amélioration (mouvements du cavalier, popups, esthétique, amélioration de l'IA).
Conclusion
Ce projet Java nous a permis de mettre en pratique l’ensemble des connaissances acquises en programmation orientée objet et en développement d’interfaces graphiques. À travers la conception des classes, la gestion des déplacements, l’implémentation des règles et la création d’une interface intuitive, nous avons développé un jeu complet, fonctionnel et structuré.
Au‑delà des aspects techniques, ce travail nous a appris à organiser notre code, à anticiper les interactions entre les différentes parties du programme et à résoudre des problèmes concrets liés à la logique de jeu. L’ajout d’une intelligence artificielle simple, de la sauvegarde de partie et d’un menu d’accueil soigné a renforcé notre capacité à penser un projet dans sa globalité.
Ce projet a également été l’occasion d’améliorer notre esprit d’équipe, notre rigueur et notre autonomie. Même si certaines fonctionnalités restent perfectibles, nous sommes satisfaits du résultat obtenu et conscients des pistes d’amélioration possibles pour de futures évolutions.
Enfin, ce travail représente une étape importante dans notre apprentissage : un projet à la fois formateur, motivant et valorisant, qui nous aura permis de progresser autant techniquement que méthodologiquement.
Je remercie énormément Romain Cuche avec qui j’ai pu travailler sur ce projet :
Merci de votre attention !