Index de l'article

 

  • Pour faciliter la création
  • Télécharger l'archive contenant un canevas des sources [ ici ]. On suppose dans la suite que l'archive s'appelle holeconsole-canvas.tgz et qu'elle a été téléchargée dans ~/Téléchargements.
  • Créer un répertoire pour le projet.
  • Déplacer l'archive dans le répertoire et la décompacter.

Exemple :

cd ~
mkdir -p code/Java/HoleConsole
cd code/Java/HoleConsole
mv ~/Téléchargements/holeconsole-canvas.tgz .
tar zxf holeconsole-canvas.tgz

 

  • Ouvrez IDEA et sélectionnez "Nouveau projet", sélectionnez "Java" dans la liste à gauche, puis dans la fenêtre de sélection du répertoire racine du projet, prendre code/Java/HoleConsole
  • Une fois la création terminer, cliquez sur le bouton entre le marteau et la flèche verte, afin de créer une configuration de compilation/exécution.
  • Cliquez sur le + pour ajouter une configuration et choisir "Application" comme type.
  • Dans la partie droite, choisissez un nom pour la configuration, le nom de la classe principale et éventuellement une valeur pour args[0].
  • Vous devriez avoir une fenêtre avec apparence similaire à ci-dessous :

tuto holeconsole 002

  • Cliquez sur la flèche verte pour vérifier que tout compile bien et que le programme commence son exécution correctement, bien qu'il ne fasse rien pour l'instant ! 

Avant de continuer dans le développement de "The Hole - console", il faut en connaître un peu plus sur boardifier-console, notamment sur la façon de structurer le code et qu'est-ce qu'il faut créer par soi-même.

Le paradigme d'architecture logicielle étant MVC (Modèle, Vue, Contrôleur), cela se traduit directement dans l'arborescence du projet. On retrouve donc :

  • boardifier : le répertoire contenant toutes les classes du framework boardifier-console. Le contenu de ce répertoire n'est pas censé être modifié, juste être parcouru pour mieux comprendre les rouages internes de boardifier-console (pour les curieux!). 

Remarque : la plupart des classes de boardifier-console sont exactement les mêmes dans son "grand frère" boardifier. Cela permet de plus facilement migrer vers une version totalement graphique d'un jeu.

  • HoleConsole : la classe contenant le main() de l'application et qui crée tous les objets nécessaires à son exécution. Cette classe doit être complété pour initialiser et lancer une partie.
  • model : le répertoire où seront mis toutes les classes représentant des éléments du jeu qui ne sont pas déjà existant dans boardifier-console (principalement des sous-classes de GameElement et de GameStageModel)
  • view : le répertoire où seront mis toutes les classes en rapport avec le visuel du jeu qui ne sont pas déjà existantes dans boardifier-console (principalement des sous-classes de ElementLook et de GameStageView)
  • control : le répertoire où sont mis les classes permettant de gérer le déroulement du jeu, ainsi que la prise de décision de l'ordinateur.

Partie modèle

  • Ce répertoire contient les squelettes (plus ou moins complets) des 5 classes nécessaires pour représenter la partie modèle :
    • pour représenter un pion : classe Pawn, qui hérite de GameElement,
    • pour représenter le plateau de 3x3 cases : classe HoleBoard, qui hérite de ContainerElement,
    • pour représenter les pool de pions : classe HolePawnPot, qui hérite de ContainerElement, (NB: déjà complète)
    • pour représenter l'unique stage (c.a.d. un niveau) d'une partie : classe HoleStageModel, qui hérite de GameStageModel,
    • pour créer les éléments de ce stage : classe HoleStageFactory, qui hérite de StageElementsFactory.

Partie vue

  • Ce répertoire ne contient que 2 classes complètes, à savoir BlackPawnPotLook et RedPawnPotLook. Elles permettent de définir l'aspect visuel des zones des pions à jouer.
  • Le répertoire contient également les squelettes de 2 classes  :
    • pour définir l'aspect des pions : classe PawnLook qui hérite de ElementLook,
    • pour définir le visuel global du stage : classe HoleStageView, qui hérité de GameStageView.

 

Partie contrôle

  • boardifier-console repose sur le fait qu'une classe représente le "contrôleur global" (cf. classe Controller) qui gère le déroulement du jeu, avec notamment la possibilité d'avoir différents stages (c.a.d. des niveaux) pour une même partie, créer des joueurs, lancer/arrêter une partie, etc. Cette classe contient également une bonne partie des mécanismes qui permettent de mettre à jour le modèle et la vue en fonction des coups des joueurs.
  • En revanche, il faut obligatoirement créer une sous-classe de Controller afin d'implémenter :
    • la gestion d'un tour de jeu du joueur courant en fonction des règles du jeu,
    • la gestion du passage d'un joueur à un autre en fonction des règles du jeu,
    • si besoin la gestion du passage d'un stage à un autre.
  • boardifier-console repose également sur le fait qu'un ordinateur joueur doit décider de lui-même ses coups. Pour cela, on doit définir une sous-classe de Decider, afin de construire une liste d'actions de jeu, représentant la décision de l'ordinateur (cf. section sur les actions & animations)
  • dans le répertoire control de l'archive se trouvent déjà 2 classes totalement écrites :
    • HoleController : le contrôleur global, avec la méthode stageLoop() qui définit le déroulement global de la partie, playTurn() qui fait joueur le joueur courant et endOfTurn() permet de passer au joueur suivant. Il y a également une fonction annexe analyseAndPlay() qui permet de vérifier la saisie d'un joueur humain et ensuite joueur son coup.
    • HoleDecider : permet de créer la liste d'actions de jeu pour le tour courant d'un joueur ordinateur. En l'occurrence, il n'y a pas de stratégie intelligente utilisée dans cette classe puisque la case choisie est tirée au hasard parmi celles qui sont valides.