public CanvasType PerformMove(GameBoard board)
        {
            var boardValues = board.GetBoardValues();
            var winningProbability = _gameUtil.GetSumOfWinningLines(boardValues);
            for (int i = 0; i < winningProbability.Length; i++)
            {
                switch ((GameState)winningProbability[i])
                {
                    case GameState.Danger:
                        winningProbability[i] = 20;
                        break;
                    case GameState.Chance:
                        winningProbability[i] = 10000;
                        break;
                    case GameState.LittleChance:
                        winningProbability[i] = 5;
                        break;
                    case GameState.LittleDanger:
                        winningProbability[i] = 2;
                        break;
                    case GameState.VerySmallChance:
                        winningProbability[i] = 1;
                        break;
                    default:
                        winningProbability[i] = 0;
                        break;
                }
            }

            _state[0] = winningProbability[0] + winningProbability[3] + winningProbability[6];
            _state[1] = winningProbability[0] + winningProbability[4];
            _state[2] = winningProbability[0] + winningProbability[5] + winningProbability[7];
            _state[3] = winningProbability[1] + winningProbability[3];
            _state[4] = winningProbability[4] + winningProbability[1] + winningProbability[6] + winningProbability[7];
            _state[5] = winningProbability[1] + winningProbability[5];
            _state[6] = winningProbability[2] + winningProbability[3] + winningProbability[7];
            _state[7] = winningProbability[2] + winningProbability[4];
            _state[8] = winningProbability[2] + winningProbability[5] + winningProbability[6];
            int max = -1;
            int field = -3;
            for (int i = 0; i < _state.Length; i++)
            {
                if (_state[i] > max && boardValues[i] == 0)
                {
                    max = _state[i];
                    field = i;
                }
            }
            return _canvasTypes[field];
        }
Exemple #2
0
        public GameResult CheckWhoWon()
        {
            var winningLines = _gameUtil.GetSumOfWinningLines(_gameBoard.GetBoardValues());

            if (winningLines.Any(x => x == (int)GameResult.CrossPlayerWon))
            {
                return(GameResult.CrossPlayerWon);
            }

            if (winningLines.Any(x => x == (int)GameResult.CirclePlayerWon))
            {
                return(GameResult.CirclePlayerWon);
            }

            if (_gameBoard.GetBoardValues().All(x => x > (int)GameResult.Draw))
            {
                return(GameResult.Draw);
            }
            return(GameResult.None);
        }