Joueur IA Escampe (Puyaubreau/Russac) — version finale
Joueur alpha-bêta + iterative deepening pour le tournoi APP5 « IA et contraintes ». - src/escampe/ : joueur (IJoueur), moteur (alpha-bêta + DFS bitmask, make/unmake sans allocation), modèle EscampeBoard (Partie1), utilitaires de test. - Protocole arbitre vérifié (pass="E", carte des liserés identique au serveur, machine à états placement/jeu) ; 7/7 victoires vs joueur aléatoire, 0 illégal. - Vérifications : VerifMoves (int≡String, 0 divergence/142k positions), RulesTest (21/21), Branching (facteur de branchement mesuré). - Rapport : report/rapport.html + tools/make_report_pdf.py (PyMuPDF) → PDF, RAPPORT.md. - Livrables buildés inclus (dist/ : jar, mainClass, tgz, rapport PDF) + lib/escampeobf.jar. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
58
README.md
Normal file
58
README.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# Escampe — Joueur IA (Puyaubreau / Russac)
|
||||
|
||||
Joueur artificiel pour le jeu **Escampe**, devoir « IA et contraintes »
|
||||
(Polytech Paris-Saclay, APP5, 2025-2026). Le joueur dialogue avec l'arbitre du
|
||||
tournoi via une interface réseau et choisit ses coups par recherche **alpha-bêta
|
||||
+ approfondissement itératif**.
|
||||
|
||||
## Démarrage rapide
|
||||
|
||||
```bash
|
||||
bash build.sh # compile, produit le jar, mainClass, l'archive et le rapport PDF
|
||||
```
|
||||
|
||||
Tout est produit dans `dist/`. Pour jouer ou tester :
|
||||
|
||||
```bash
|
||||
# Une partie arbitrée : notre IA contre le joueur aléatoire fourni
|
||||
bash scripts/match.sh
|
||||
|
||||
# Sous Windows, en local (double-clic) :
|
||||
jouer-vs-IA.bat # vous (humain) contre notre IA
|
||||
jouer-vs-pote.bat # deux humains
|
||||
```
|
||||
|
||||
Le serveur de jeu et les joueurs de référence sont dans `lib/escampeobf.jar`
|
||||
(fourni avec le sujet). Voir [MULTIJOUEUR.md](MULTIJOUEUR.md) pour le jeu à distance.
|
||||
|
||||
## Structure
|
||||
|
||||
| Chemin | Rôle |
|
||||
|--------|------|
|
||||
| `src/escampe/` | Sources Java (paquetage `escampe`) |
|
||||
| `src/escampe/JoueurPuyaubreauRussac.java` | Le joueur (interface `IJoueur`) |
|
||||
| `src/escampe/Moteur.java` | Recherche alpha-bêta + heuristique |
|
||||
| `src/escampe/EscampeBoard.java` | Modèle de jeu (interface `Partie1`) |
|
||||
| `src/escampe/{VerifMoves,RulesTest,Bench,Branching}.java` | Utilitaires de test (hors jar de production) |
|
||||
| `report/rapport.html` · `tools/make_report_pdf.py` | Source du rapport et générateur PDF |
|
||||
| `RAPPORT.md` | Rapport (version Markdown) |
|
||||
| `build.sh` | Build reproductible |
|
||||
| `lib/escampeobf.jar` | Serveur d'arbitre + joueurs de référence (fournis) |
|
||||
| `dist/` | Livrables buildés (jar, `mainClass`, archive, rapport PDF) |
|
||||
|
||||
## Livrables de la version finale (dans `dist/`)
|
||||
|
||||
- `Puyaubreau_Russac.jar` — jar exécutable (point d'entrée `escampe.ClientJeu`)
|
||||
- `mainClass` — descripteur du tournoi (jar / clientClass / mainClass)
|
||||
- `Puyaubreau_Russac.tgz` — archive de rendu (`src/` + `mainClass` + jar)
|
||||
- `Puyaubreau_Russac_rapport.pdf` — rapport
|
||||
|
||||
## Tests
|
||||
|
||||
```bash
|
||||
javac -d out src/escampe/*.java
|
||||
java -cp out escampe.VerifMoves # chemin de recherche ≡ règles vérifiées (0 divergence)
|
||||
java -cp out escampe.RulesTest # tests de règles (21/21)
|
||||
java -cp out escampe.Bench 3000 8 # profondeur / vitesse du moteur
|
||||
java -cp out escampe.Branching # facteur de branchement
|
||||
```
|
||||
Reference in New Issue
Block a user