# 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**.