Files
escampe-ia/MULTIJOUEUR.md
Ethan Puyaubreau e508efa14f 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>
2026-05-30 16:00:29 +02:00

3.5 KiB

Jouer à Escampe en multijoueur

Le jeu est réseau : un serveur (l'arbitre) + deux clients qui s'y connectent. Chaque client charge soit un humain (escampe.JoueurHumain, en console), soit une IA (escampe.JoueurPuyaubreauRussac, la nôtre, ou escampe.JoueurAleatoire). Les clients peuvent être sur la même machine ou sur deux machines différentes : seules des chaînes de caractères circulent.

Prérequis sur chaque machine : Java et le fichier escampeobf.jar (le serveur + les joueurs de référence). Pour jouer contre notre IA, il faut aussi Puyaubreau_Russac.jar (produit par build.sh, dans dist/).


1. Sur le même PC — le plus simple

Double-cliquez sur :

  • jouer-vs-pote.bat → deux humains (3 fenêtres : serveur + 2 joueurs).
  • jouer-vs-IA.bat → vous (humain) contre notre IA.

(Ou, à la main, dans 3 terminaux PowerShell :)

java -cp escampeobf.jar escampe.ServeurJeu 1234 1
java -cp escampeobf.jar escampe.ClientJeu escampe.JoueurHumain localhost 1234
java -cp escampeobf.jar escampe.ClientJeu escampe.JoueurHumain localhost 1234

2. À distance, avec un pote (deux PC sur le même réseau / Wi-Fi)

Vous (l'hôte) lancez le serveur et trouvez votre adresse IP locale :

java -cp escampeobf.jar escampe.ServeurJeu 1234 1
ipconfig          # repérez « Adresse IPv4 », ex. 192.168.1.42

Puis lancez votre propre client (sur l'hôte, localhost suffit) :

java -cp escampeobf.jar escampe.ClientJeu escampe.JoueurHumain localhost 1234

Votre pote, sur son PC, se connecte à votre IP (remplacez localhost) :

java -cp escampeobf.jar escampe.ClientJeu escampe.JoueurHumain 192.168.1.42 1234

Notes :

  • Le pare-feu Windows de l'hôte doit autoriser Java sur le port 1234 (une fenêtre de demande apparaît au 1ᵉʳ lancement — cliquez « Autoriser »).
  • Il faut être sur le même réseau local (même box/Wi-Fi).
  • Par Internet (réseaux différents) : il faut une redirection de port sur la box de l'hôte (port 1234 → IP de l'hôte) ou un VPN type Tailscale/Hamachi (plus simple et sûr). Sinon le pote ne peut pas atteindre votre machine.

3. Comment on joue (client console JoueurHumain)

À votre tour, le client affiche le plateau et vous demande de taper :

  • au placement : le bord H/B (Noir choisit ; Blanc est forcé au bord opposé), puis la case de la licorne, puis les 5 paladins (ex. A1, B2, …) ;
  • en jeu : la case de départ puis la case d'arrivée (ex. C2, D2).

Rappel des règles : la pièce doit partir d'une case du même liseré que la case où l'adversaire vient d'arriver, et avance d'autant de cases que le liseré (1, 2 ou 3), sans traverser ni revenir sur une case. On gagne en se posant sur la licorne adverse. Si vous ne pouvez rien jouer, le tour est passé automatiquement.

Le serveur ouvre aussi une fenêtre graphique du plateau (attention : d'après l'énoncé, le tout dernier coup n'y est pas affiché). Le client humain en console reste un peu rustique, mais fonctionne.


4. Variantes utiles

# Vous (humain) contre l'IA :
java -cp Puyaubreau_Russac.jar escampe.ClientJeu escampe.JoueurPuyaubreauRussac localhost 1234
java -cp escampeobf.jar        escampe.ClientJeu escampe.JoueurHumain            localhost 1234

# Joueur aléatoire de référence (pour tester) :
java -cp escampeobf.jar escampe.ClientJeu escampe.JoueurAleatoire localhost 1234