e508efa14f442e59b5fcbd74e0a1e3d037135c13
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>
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 build.sh # compile, produit le jar, mainClass, l'archive et le rapport PDF
Tout est produit dans dist/. Pour jouer ou tester :
# 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 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éeescampe.ClientJeu)mainClass— descripteur du tournoi (jar / clientClass / mainClass)Puyaubreau_Russac.tgz— archive de rendu (src/+mainClass+ jar)Puyaubreau_Russac_rapport.pdf— rapport
Tests
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
Description
Languages
Java
75.2%
HTML
16.5%
Shell
3.7%
Python
3.1%
Batchfile
1.5%