コード例 #1
0
        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);
        }
コード例 #2
0
        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);
                }
            }
        }