67 lines
2.8 KiB
Markdown
67 lines
2.8 KiB
Markdown
# Gomoku
|
|
|
|
## Comment compiler et lancer le jeu ?
|
|
```bash
|
|
javac -d build src/*java
|
|
java -cp src/GomokuGame
|
|
```
|
|
## Options de Commande pour le Jeu Gomoku
|
|
|
|
Voici les différentes options de commande disponibles pour configurer et lancer le jeu Gomoku :
|
|
|
|
- `--save <chemin>` : Charge une partie sauvegardée à partir du chemin spécifié.
|
|
- Exemple : `--save chemin/vers/la/partie`
|
|
|
|
- `--pvp` : Active le mode joueur contre joueur (PvP).
|
|
- Exemple : `--pvp`
|
|
|
|
- `--size <largeur> <hauteur>` : Définit la taille du plateau de jeu.
|
|
- Exemple : `--size 15 15`
|
|
|
|
- `--nbToken <nombre>` : Définit le nombre de jetons disponibles pour chaque joueur.
|
|
- Exemple : `--nbToken 50`
|
|
|
|
- `--difficulty <niveau>` : Définit le niveau de difficulté de l'IA (1, 2, ou 3).
|
|
- Exemple : `--difficulty 2`
|
|
|
|
- `--nbTokenToWin <nombre>` : Définit le nombre de jetons à aligner pour gagner.
|
|
- Exemple : `--nbTokenToWin 5`
|
|
|
|
### Exemple d'utilisation :
|
|
```bash
|
|
java GomokuGame --pvp --size 15 15 --nbToken 50 --difficulty 2 --nbTokenToWin 5
|
|
```
|
|
|
|
### Remarques :
|
|
- Si une option est mal utilisée ou si les paramètres sont invalides, les valeurs par défaut seront appliquées.
|
|
- La taille minimale du plateau est de 3x3. Si une taille inférieure est spécifiée, le jeu ne démarrera pas.
|
|
|
|
## Structure
|
|

|
|
|
|
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,
|
|
- Le joueur actuel,
|
|
- Le renderer
|
|
|
|
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.
|