/// <summary>
        /// Rekurzivna funkcija. Gleda kolko imamo crnih polja koja su povezana u cjelinu.
        /// </summary>
        /// <param name="row"></param>
        /// <param name="column"></param>
        /// <param name="unallowedDirection">1 - up. 2 - right. 3 - down. 4 - left.</param>
        /// <returns></returns>
        private void CountConnectedBlackCells(int row, int column, int unallowedDirection, int cellsVisited)
        {
            if (cellsVisited == 1)
            {
                solver.passedBlackCells = new List <Point>();
            }
            solver.passedBlackCells.Add(new Point(row, column));

            if (cellsVisited > solver.maxNumberOfBlackCells)
            {
                return;
            }

            // up
            if (unallowedDirection != 1 && (row - 1) >= 0)
            {
                if (solver.CellIsBlack((row - 1), column) && !solver.BlackCellIsAlreadyPassed((row - 1), column))
                {
                    CountConnectedBlackCells(((row - 1)), column, 3, ++cellsVisited);
                }
            }

            // right
            if (unallowedDirection != 2 && (column + 1) < solver.gridWidth)
            {
                if (solver.CellIsBlack(row, (column + 1)) && !solver.BlackCellIsAlreadyPassed(row, (column + 1)))
                {
                    CountConnectedBlackCells(row, (column + 1), 4, ++cellsVisited);
                }
            }

            // down
            if (unallowedDirection != 3 && (row + 1) < solver.gridHeight)
            {
                if (solver.CellIsBlack((row + 1), column) && !solver.BlackCellIsAlreadyPassed((row + 1), column))
                {
                    CountConnectedBlackCells((row + 1), column, 1, ++cellsVisited);
                }
            }

            // left
            if (unallowedDirection != 4 && (column - 1) >= 0)
            {
                if (solver.CellIsBlack(row, (column - 1)) && !solver.BlackCellIsAlreadyPassed(row, (column - 1)))
                {
                    CountConnectedBlackCells(row, (column - 1), 2, ++cellsVisited);
                }
            }
        }