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
build.sh
Normal file
58
build.sh
Normal file
@@ -0,0 +1,58 @@
|
||||
#!/bin/bash
|
||||
# Build reproductible du joueur Escampe (partie 3).
|
||||
# Produit dans dist/ :
|
||||
# - Puyaubreau_Russac.jar : jar exécutable (point d'entrée escampe.ClientJeu)
|
||||
# - mainClass : descripteur attendu par le tournoi
|
||||
# - Puyaubreau_Russac.tgz : archive de rendu (Puyaubreau_Russac/src + mainClass + jar)
|
||||
# - Puyaubreau_Russac_rapport.pdf : rapport (via PyMuPDF ; sauter avec --no-report)
|
||||
set -e
|
||||
ROOT="$(cd "$(dirname "$0")" && pwd)"; cd "$ROOT"
|
||||
WITH_REPORT=1; [ "${1:-}" = "--no-report" ] && WITH_REPORT=0
|
||||
|
||||
NAME="Puyaubreau_Russac"
|
||||
JAR="$NAME.jar"
|
||||
PLAYER="escampe.JoueurPuyaubreauRussac"
|
||||
CLIENT="escampe.ClientJeu"
|
||||
|
||||
# Classes de PRODUCTION (on exclut les utilitaires de test : VerifMoves, RulesTest, Bench).
|
||||
RUNTIME="IJoueur ClientJeu Solo Applet Partie1 EscampeBoard Moteur JoueurPuyaubreauRussac"
|
||||
|
||||
echo "[1/4] Compilation des classes de production…"
|
||||
rm -rf build dist
|
||||
mkdir -p build dist
|
||||
SRCS=""
|
||||
for c in $RUNTIME; do SRCS="$SRCS src/escampe/$c.java"; done
|
||||
javac -d build $SRCS
|
||||
|
||||
echo "[2/4] Création du jar exécutable ($JAR)…"
|
||||
jar --create --file "dist/$JAR" --main-class "$CLIENT" -C build escampe
|
||||
|
||||
echo "[3/4] Écriture du fichier mainClass…"
|
||||
printf 'jar:%s\nclientClass:%s\nmainClass:%s\n' "$JAR" "$CLIENT" "$PLAYER" > dist/mainClass
|
||||
|
||||
echo "[4/4] Assemblage de l'archive de rendu…"
|
||||
rm -rf "dist/$NAME"
|
||||
mkdir -p "dist/$NAME/src/escampe"
|
||||
cp src/escampe/*.java "dist/$NAME/src/escampe/"
|
||||
cp dist/mainClass "dist/$NAME/mainClass"
|
||||
cp "dist/$JAR" "dist/$NAME/$JAR"
|
||||
( cd dist && tar czf "$NAME.tgz" "$NAME" )
|
||||
|
||||
REPORT=""
|
||||
if [ "$WITH_REPORT" = "1" ]; then
|
||||
echo "[5/5] Génération du rapport PDF…"
|
||||
if python tools/make_report_pdf.py >/dev/null 2>&1; then
|
||||
REPORT=" dist/${NAME}_rapport.pdf"
|
||||
else
|
||||
echo " (PDF non généré : PyMuPDF indisponible — relancer 'python tools/make_report_pdf.py')"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "----------------------------------------------------"
|
||||
echo "OK :"
|
||||
echo " dist/$JAR"
|
||||
echo " dist/mainClass"
|
||||
echo " dist/$NAME.tgz"
|
||||
[ -n "$REPORT" ] && echo "$REPORT"
|
||||
echo "Lancement tournoi (rappel) :"
|
||||
echo " java -cp $JAR $CLIENT $PLAYER <hôte> <port>"
|
||||
Reference in New Issue
Block a user