Итак, я создал лабиринт, где «#» - стены, а «.» доступны координаты для перемещения. Я пытаюсь остановить рекурсию, когда она выходит из лабиринта. Поэтому, когда (x, y) равно 12. Это может быть простое исправление.
Это мой лабиринт ...
char[,] maze1 =
// USE THIS
{ { '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#' },
{ '#', '.', '.', '.', '#', '.', '.', '.', '.', '.', '.', '#' },
{ '#', '.', '#', '.', '#', '.', '#', '#', '#', '#', '.', '#' },
{ '#', '#', '#', '.', '#', '.', '.', '.', '.', '#', '.', '#' },
{ '#', '.', '.', '.', '.', '#', '#', '#', '.', '#', '.', '.' },
{ '#', '#', '#', '#', '.', '#', '.', '#', '.', '#', '.', '#' },
{ '#', '.', '.', '#', '.', '#', '.', '#', '.', '#', '.', '#' },
{ '#', '#', '.', '#', '.', '#', '.', '#', '.', '#', '.', '#' },
{ '#', '.', '.', '.', '.', '.', '.', '.', '.', '#', '.', '#' },
{ '#', '#', '#', '#', '#', '#', '.', '#', '#', '#', '.', '#' },
{ '#', '.', '.', '.', '.', '.', '.', '#', '.', '.', '.', '#' },
{ '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#' } };
Вот мой метод ...
private void mazeTraversal(int currentX, int currentY, char[,] maze)
{
/*************** ATTEMPT 1 ******************/
// Checks if coordinates are inside the maze
if (currentX <= 11 && currentY <= 11)
{
// Implement maze traversal recursive call
//PrintOriginalMaze(maze, currentX, currentY);
// If the coordinate is a '.' , continue(This is the base case)
if ('.' == maze[currentX, currentY])
{
// Changes location to a X so you cant go back.
maze[currentX, currentY] = 'X';
// Implement maze traversal recursive call
PrintOriginalMaze(maze, currentX, currentY);
mazeTraversal(currentX, currentY + 1, maze);
// maze[currentX, currentY] = 'X';
mazeTraversal(currentX - 1, currentY, maze);
//maze[currentX, currentY] = 'X';
mazeTraversal(currentX + 1, currentY, maze);
// maze[currentX, currentY] = 'X';
mazeTraversal(currentX, currentY - 1, maze);
//maze[currentX, currentY] = 'X';
}
if ('#' == maze[currentX, currentY])
{
Console.WriteLine("Hit a wall");
Console.WriteLine();
}
}
}