public static WinnerStats RunGames(GameState gameState, GeneratePlayerInputDelegate generatePlayerInput, int numGames) { WinnerStats winnerStats = new WinnerStats(); for (int game = 0; game < numGames; game++) { GameState finalGameState = RunGame(gameState, generatePlayerInput); switch (finalGameState.Winner) { case BoardState.Winner.Player1: winnerStats.Player1Wins++; break; case BoardState.Winner.Player2: winnerStats.Player2Wins++; break; case BoardState.Winner.Draw: winnerStats.Draws++; break; default: throw new Exception("Invalid Winner"); } } return(winnerStats); }
public static GameState RunGame(GameState gameState, GeneratePlayerInputDelegate generatePlayerInput) { GameState nextGameState = gameState; while (true) { PlayerInput playerInput = generatePlayerInput(nextGameState); GameState newGameState = Tick(nextGameState, playerInput); nextGameState = newGameState; if (newGameState.Winner != BoardState.Winner.None) { return(newGameState); } } }