# Gomoku ## How to build and run ```bash javac -d build src/*java java -cp src/GomokuGame ``` ## Structure !(UML)[UML.png] Pour commencer, nous avons créé deux énumérations : une pour les couleurs, nommée `Color`, et une autre pour les directions cardinales, nommée `Cardinal`. Les couleurs sont utilisées pour les jetons placés sur le plateau. Les directions nous permettent de naviguer dans la grille de cellules, qui est liée dans les huit directions cardinales. Nous avons une classe abstraite représentant le joueur, nommée `Player`, qui se décline en deux classes : - `Human`, qui sollicite l'utilisateur pour jouer son tour, - `GomokuAI`, qui représente un joueur contrôlé par l'ordinateur. Pour la zone de jeu, nous avons une classe `GomokuCell` qui représente une case possédant tous ses voisins dans les huit directions ainsi que la couleur du jeton placé sur cette case. Une autre classe, `GomokuBoard`, contient la cellule située en haut à gauche du plateau. C'est à partir de cette cellule que nous parcourons l'ensemble du jeu. Cette classe génère le plateau, les extensions du plateau, etc. Pour lancer le jeu, nous avons la classe `GomokuGame` qui possède une méthode `main` et accepte des paramètres si l'utilisateur le souhaite. Elle crée la partie et la boucle de jeu, et contient : - Les deux joueurs, - Le plateau, - Le nombre de cellules alignées nécessaires pour gagner, etc. Pour le rendu, nous avons une classe abstraite `GomokuRenderer` qui se décline en `ConsoleRenderer`, permettant l'affichage du plateau dans le terminal. La classe abstraite existe pour faciliter le remplacement du renderer si nécessaire à l'avenir.