Comment implémenter un jeu de stratégie avec Sgamaja ?
La bibliothèque de jeu générique de Sgamaja offre la possiblité d'implémenter rapidement et facilement n'importe quel jeu de stratégie de plateau à deux joueurs, à somme nulle et sans aucune information cachée.
Ce document détaille la marche à suivre afin d'implémenter un tel jeu qui puisse être géré par le moteur de jeu générique de Sgamaja par application de l'algorithme alpha-beta d'exploration de l'arbre des coups.
Pour plus d'informations sur certaines méthodes ou membres des classes de la bibliothèque de jeu générique, il est conseillé de se reporter à la javadoc.
Il est également possible d'implémenter avec Sgamaja tout jeu de plateau en utilisant les classes abstraites fournies. Cependant un tel jeu ne pourra pas être obligatoirement jouable par le moteur générique utilisant l'algorithme alpha-beta. Sgamaja ne peut alors servir que d'interface pour un affrontement entre joueurs humains.
Notons qu'il n'est cependant pas impossible qu'à l'avenir de nouveaux moteurs de jeu générique soit développés au sein du projet Sgamaja afin de gérer les jeux à somme non nulle et/ou à information cachée.
Présentation des classes
La bibliothèque de jeu générique game dispose de classes utiles pour l'implémentation d'un jeu de stratégie dans le package game :
-
Game : classe abstraite ancêtre de toutes les classes de jeu
Afin d'implémenter un nouveau jeu, il est nécessaire de dériver la classe Game. Cette classe comprend plusieurs sous-classes qui doivent elles aussi être dérivées.
Grâce à cette classe, il est possible de définir un modèle de réprésentation du jeu et du plateau associé.
Il est également conseillé de surcharger certaines méthodes afin de permettre l'utilisation de l'algorithme alpha-bêta avec table de mémorisation des plateaux.
Après avoir implémenté une dérivation de la classe Game, il est possible de la tester avec Tester.
-
Evaluator : classe abstraite ancêtre des fonctions d'évaluation de plateau
Les classes dérivées de Evaluator abritent une méthode d'évaluation capable à partir de différents coefficients et d'un algorithme d'attribuer une note à un plateau vu par un certain joueur. Plus la note attribuée est élevée, plus la situation du plateau est favorable au joueur dont le point de vue est utilisé.
Les coefficients fournis à la fonction d'évaluation permettent d'affiner la note en privilégiant certains aspects du plateau dans l'algorithme d'évaluation.
-
Displayer : classe abstraite ancêtre permettant l'affichage du plateau
Une classe dérivée de Displayer a pour mission d'afficher le tableau de jeu et d'assurer les mises à jour d'affichage pour chaque coup joué.
L'affichage peut être réalisé en console ou bien en utilisant des libraries graphiques de Java.
2004, The Sgamaja project <http://sgamaja.sf.net/>