# 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 ```