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