Maze Generation
This is a demonstration of the recursive backtracker approach to maze generation.
We start with all cells marked as unvisited. The "current cell" is set to the top left corner. At each iteration, we look to see if any of the current cell's neighbors are unvisited.
If the current cell has unvisited neighbors, we pick one of the unvisited neighbors at random and knock out a wall to connect it with the current cell. The picked neighbor becomes the current cell for the next iteration.
If the current cell has no unvisited neighbors, we backtrack until we can set the current cell to a cell that has unvisited neighbors. If we backtrack all the way to the initial current cell, the maze is complete.