#!/bin/bash # Lot de parties arbitrées contre JoueurAleatoire, alternant les couleurs. # Convention observée : le 1er connecté = JOUEUR 1 = Blanc, le 2e = JOUEUR 2 = Noir. # Donc : moi en joueur A => je suis Blanc ; moi en joueur B => je suis Noir. # # usage: bench_vs_random.sh [N_par_couleur] [sliceMs] set -u ROOT="$(cd "$(dirname "$0")/.." && pwd)"; cd "$ROOT" N="${1:-3}"; SLICE="${2:-300}" JAR="$ROOT/lib/escampeobf.jar"; [ -f "$JAR" ] || JAR="C:/Users/Kerboul/Downloads/escampeobf.jar" ME="escampe.JoueurPuyaubreauRussac"; RND="escampe.JoueurAleatoire" LOG="$ROOT/scripts/logs" port=1300; wins=0; losses=0; illegal=0; exc=0; games=0 play() { # $1 = ma couleur attendue (Blanc|Noir) port=$((port+1)); games=$((games+1)) if [ "$1" = "Blanc" ]; then OPTS_A="-Descampe.maxSliceMs=$SLICE" OPTS_B="" \ bash scripts/match.sh "$ME" out "$RND" "$JAR" "$port" 45 >/dev/null 2>&1 else OPTS_A="" OPTS_B="-Descampe.maxSliceMs=$SLICE" \ bash scripts/match.sh "$RND" "$JAR" "$ME" out "$port" 45 >/dev/null 2>&1 fi local winner; winner=$(grep -aoE "FIN! (Blanc|Noir)" "$LOG/server.log" | tail -1 | awk '{print $2}') local il; il=$(grep -ac "illegal" "$LOG/server.log"); il=${il//[^0-9]/}; il=${il:-0} illegal=$((illegal + il)) # exception côté MON client (A si Blanc, B si Noir) local mylog; [ "$1" = "Blanc" ] && mylog="$LOG/playerA.log" || mylog="$LOG/playerB.log" if grep -aqiE "exception|\bat escampe\." "$mylog" 2>/dev/null; then exc=$((exc+1)); fi if [ "$winner" = "$1" ]; then wins=$((wins+1)); R=GAGNE; else losses=$((losses+1)); R=perdu; fi echo " partie $games : moi=$1 vainqueur=$winner -> $R" } echo "=== $N parties en Blanc, $N en Noir (slice ${SLICE}ms) ===" for i in $(seq 1 "$N"); do play Blanc; done for i in $(seq 1 "$N"); do play Noir; done echo "-------------------------------------------" echo "Victoires : $wins / $games" echo "Défaites : $losses" echo "Coups illégaux (arbitre) : $illegal" echo "Exceptions dans mon client : $exc"