56 lines
1.8 KiB
Markdown
56 lines
1.8 KiB
Markdown
# BUT3 – Projet Jeu : Hex
|
||
|
||
|
||
Il s’agit d’une implémentation du jeu **Hex** en Java, développée à partir de l’API fournie par le Monsieur Madelaine.
|
||
Le projet comprend un moteur de jeu fonctionnel, un affichage console pour le debug, ainsi que des bots permettant de jouer automatiquement.
|
||
|
||
|
||
## Compilation
|
||
|
||
Depuis la racine du projet, compiler l’ensemble des fichiers Java avec la commande suivante :
|
||
|
||
```bash
|
||
javac -d build $(find javaAPI -name "*.java")
|
||
```
|
||
|
||
Les fichiers compilés (`.class`) sont générés dans le dossier `bin`.
|
||
|
||
|
||
## Lancer une démonstration
|
||
|
||
### Partie automatique (bot)
|
||
|
||
```bash
|
||
java -cp build fr.iut_fbleau.HexGame.HexMain 3 autoplay
|
||
```
|
||
|
||
Ce mode permet de lancer une partie entièrement automatique en utilisant le bot implémenté dans la classe `Simulation`.
|
||
|
||
### Partie interactive (joueur humain)
|
||
|
||
```bash
|
||
java -cp build fr.iut_fbleau.HexGame.HexMain
|
||
```
|
||
|
||
Le plateau s’affiche dans le terminal et les coups sont entrés sous forme de coordonnées.
|
||
|
||
|
||
## Tests et validation
|
||
|
||
Les tests sont réalisés sous forme de **tests fonctionnels** via des méthodes `main` et des modes de démonstration :
|
||
- vérification de la validité des coups,
|
||
- alternance correcte des joueurs,
|
||
- détection des conditions de fin de partie,
|
||
- exécution de parties complètes en mode automatique.
|
||
|
||
L’affichage console du plateau, fourni par la méthode `HexBoard.toString()`, est utilisé comme outil de debug pour visualiser l’état du jeu à chaque tour.
|
||
|
||
|
||
## Organisation du projet
|
||
|
||
- `HexBoard` : représentation du plateau et gestion des règles du jeu
|
||
- `HexPly` : représentation d’un coup
|
||
- `Simulation` : bot basé sur une recherche Minimax à profondeur limitée
|
||
- `HexMain` : point d’entrée du programme
|
||
|
||
Les classes principales sont documentées à l’aide de **Javadoc**. |