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:
93
MULTIJOUEUR.md
Normal file
93
MULTIJOUEUR.md
Normal file
@@ -0,0 +1,93 @@
|
||||
# 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 :)
|
||||
|
||||
```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 :
|
||||
|
||||
```powershell
|
||||
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) :
|
||||
|
||||
```powershell
|
||||
java -cp escampeobf.jar escampe.ClientJeu escampe.JoueurHumain localhost 1234
|
||||
```
|
||||
|
||||
**Votre pote**, sur son PC, se connecte à **votre IP** (remplacez `localhost`) :
|
||||
|
||||
```powershell
|
||||
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
|
||||
|
||||
```powershell
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user