#/bin/bash #Bash script for automating evaluate echo "Dots and Boxes Agent Shell Script: Ver 1.0RC2: adding options" while getopts ':w:p:h:' opt; do case $opt in w) WEB=$OPTARG;; p) PORT=$OPTARG;; h) echo "Usage: ./start.sh -w (web port) -p (starting agent port)" exit 0;; \?) echo "Invalid option: -$OPTARG" >&2 echo "Usage: ./start.sh -w (web port) -p (starting agent port)" exit 1;; *) echo "Usage: ./start.sh -w (web port) -p (starting agent port)" exit 1;; esac done (python3 python/dotsandboxes/dotsandboxesserver.py $WEB) >> server.log & echo "Web server running on http://127.0.0.1:$WEB" PORT=`expr $PORT - 1`; for a in 1 2 do ((PORT=PORT+1)); echo "Available Agents:" echo "1: Random" echo "2: Monte Carlo Tree Search" echo "3: Alpha-Beta Pruning/Minimax" PORT=`expr $PORT + 1`; read -p "Agent:" Agent case $Agent in 1) echo "Random Agent running on ws://127.0.0.1:$PORT" (python3 python/dotsandboxes/dotsandboxesagent.py $PORT) > $a.log & ;; 2) echo "MCTS Agent running on ws://127.0.0.1:$PORT" (python3 python/agent_MCTS.py $PORT) > $a.log & ;; 3) echo "AB Agent running on ws://127.0.0.1:$PORT" (python3 python/agent_AB.py $PORT) > $a.log & ;; *) echo "Invalid input. Human player assumed. Undefined behavior will likely occur because I am lazy." ;; esac done read -p "Do you want to run the logger? (Y/N): " log case $log in Y|y) echo "" read -p "Columns of board: " c read -p "Rows of board: " r read -p "Number of games to run: " n read -p "Output file name (please include '.csv'): " o echo "" read -p "This will now run evaluate.py with the given arguments in the foreground. Hit enter to confirm." TRASH (python3 python/evaluate.py -c $c -r $r -n $n -o $o ws://127.0.0.1:`expr $PORT - 1` ws://127.0.0.1:`expr $PORT`) > evaluate.log echo "" echo "Log of evaluate python script located in evaluate.log" echo "Evaluate has finished! Check the output in $o" ;; *) echo "Web interface available at http://127.0.0.1:$WEB" ;; esac echo "Press enter to exit, killing all agents and the web server." read TRASH; trap "exit" INT TERM trap "kill 0" EXIT