private static bool FindArea(out ConectedArea area) { for (int row = 0; row < maze.GetLength(0); row++) { for (int col = 0; col < maze.GetLength(1); col++) { if (!maze[row, col]) { area = new ConectedArea(0, row, col); return(true); } } } area = null; return(false); }
private static void CrawArea(ConectedArea area, int row, int col) { if (row < 0 || row >= maze.GetLength(0) || col < 0 || col >= maze.GetLength(1) || maze[row, col]) { return; } maze[row, col] = true; area++; CrawArea(area, row, col - 1); // Left CrawArea(area, row - 1, col); // Up CrawArea(area, row, col + 1); // Right CrawArea(area, row + 1, col); // Down }