コード例 #1
0
        private bool BlockFrontSlashDiagonal(
            TicTacToeBoard board)
        {
            var frontSlashDiagonalCells = board.GetFrontSlashDiagonalCells();

            var madeBlock = MakeBlockOnCells(frontSlashDiagonalCells, board);

            if (madeBlock)
            {
                return(true);
            }

            return(false);
        }
コード例 #2
0
        private bool SetFirstBlankSpace(
            TicTacToeBoard board)
        {
            var allLocations = TicTacToeBoard.GetAllLocations();

            foreach (var location in allLocations)
            {
                if (board.IsCellBlank(location))
                {
                    board.SetCellValue(location, _playerCellValue);
                    return(true);
                }
            }

            return(false);
        }
コード例 #3
0
        private bool BlockHorizontal(
            TicTacToeBoard board)
        {
            for (int y = 0; y < 3; y++)
            {
                var horizontalCells = board.GetHorizontalCells(y);

                var madeBlock = MakeBlockOnCells(horizontalCells, board);

                if (madeBlock)
                {
                    return(true);
                }
            }

            return(false);
        }
コード例 #4
0
        private bool BlockVertical(
            TicTacToeBoard board)
        {
            for (int x = 0; x < 3; x++)
            {
                var verticalCells = board.GetVerticalCells(x);

                var madeBlock = MakeBlockOnCells(verticalCells, board);

                if (madeBlock)
                {
                    return(true);
                }
            }

            return(false);
        }
コード例 #5
0
        public void MakeNextMove(
            TicTacToeBoard board)
        {
            var possibleMoves = CreatePossibleMoves();

            foreach (var possibleMove in possibleMoves)
            {
                var madeMove = possibleMove(board);

                if (madeMove)
                {
                    return;
                }
            }

            throw new Exception("Could not make another move.");
        }
コード例 #6
0
        private bool MakeBlockOnCells(
            CellValueWithLocation[] cells,
            TicTacToeBoard board)
        {
            for (int n = 0; n < 3; n++)
            {
                if (cells[AllCombos[n, 0]].IsBlank &&
                    cells[AllCombos[n, 1]].CellValue == _opposingCellValue &&
                    cells[AllCombos[n, 2]].CellValue == _opposingCellValue)
                {
                    board.SetCellValue(
                        cells[AllCombos[n, 0]],
                        _playerCellValue);

                    return(true);
                }
            }

            return(false);
        }