readme and uml
This commit is contained in:
29
README.md
29
README.md
@@ -1,7 +1,34 @@
|
|||||||
# Gomoku
|
# Gomoku
|
||||||
|
|
||||||
## how to build and run
|
## How to build and run
|
||||||
```bash
|
```bash
|
||||||
javac -d build src/*java
|
javac -d build src/*java
|
||||||
java -cp src/GomokuGame
|
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.
|
||||||
|
|||||||
Reference in New Issue
Block a user