#!/bin/bash # Lance une partie ARBITRÉE entre deux IJoueur via le serveur réseau fourni. # # usage: match.sh [CLASS_A] [CP_A] [CLASS_B] [CP_B] [PORT] [TIMEOUT_S] # # Par défaut : notre joueur (depuis out/) contre escampe.JoueurAleatoire (jar). # Le serveur (escampe.ServeurJeu) et les adversaires de référence vivent dans # escampeobf.jar, fourni séparément (hors livrable). Seules des chaînes de # caractères circulent sur le réseau : la divergence d'interface obfusquée # entre le jar et nos sources est donc sans effet. set -u ROOT="$(cd "$(dirname "$0")/.." && pwd)" cd "$ROOT" # Jar arbitre : dans le repo (lib/) en priorité, sinon dans Downloads. JAR="$ROOT/lib/escampeobf.jar" [ -f "$JAR" ] || JAR="C:/Users/Kerboul/Downloads/escampeobf.jar" CLA="${1:-escampe.JoueurPuyaubreauRussac}"; CPA="${2:-out}" CLB="${3:-escampe.JoueurAleatoire}"; CPB="${4:-$JAR}" PORT="${5:-1234}"; TMO="${6:-60}" OPTS_A="${OPTS_A:-}" # options JVM pour le joueur A (ex: -Descampe.debug=true) OPTS_B="${OPTS_B:-}" LOG="$ROOT/scripts/logs"; mkdir -p "$LOG"; rm -f "$LOG"/*.log echo "Serveur : ServeurJeu $PORT 1" echo "Joueur A : $CLA (cp=$CPA)" echo "Joueur B : $CLB (cp=$CPB)" echo "----------------------------------------" java -cp "$JAR" escampe.ServeurJeu "$PORT" 1 > "$LOG/server.log" 2>&1 & SRV=$! sleep 2 java $OPTS_A -cp "$CPA" escampe.ClientJeu "$CLA" localhost "$PORT" > "$LOG/playerA.log" 2>&1 & A=$! sleep 1 java $OPTS_B -cp "$CPB" escampe.ClientJeu "$CLB" localhost "$PORT" > "$LOG/playerB.log" 2>&1 & B=$! # Chien de garde : tue tout après TMO secondes si la partie ne se termine pas. ( sleep "$TMO"; kill $A $B $SRV 2>/dev/null ) & WATCH=$! wait $A 2>/dev/null wait $B 2>/dev/null kill $SRV 2>/dev/null kill $WATCH 2>/dev/null echo "=== SERVER ==="; cat "$LOG/server.log" echo; echo "=== PLAYER A ($CLA) ==="; cat "$LOG/playerA.log" echo; echo "=== PLAYER B ($CLB) ==="; cat "$LOG/playerB.log"