public class CG_pathfinder { static int paths = 0; private static final int[][] dir = new int[][]{ {0, 1}, //right {1, 0}, //down {0, -1}, //left {-1, 0} //up }; static void traverse(int x, int y, char[][] maze, boolean[][] visited) { int curx; int cury; for (int i = 0; i < 4; i++) { // Print the maze at every iteration. for(int j = 0; j < maze.length; j++) for(int k = 0; k < maze[j].length; k++) if (visited[j][k]) System.out.print("x"); else System.out.print(maze[j][k]); System.out.print(" "); curx = x; cury = y; curx += dir[i][0]; cury += dir[i][1]; if (curx < 0 || cury < 0 || curx > maze.length - 1 || cury > maze.length - 1) continue; //optional? //for square mazes if (maze[curx][cury] == '$') { paths++; System.out.print("|"); // Print the maze at every iteration. for(int j = 0; j < maze.length; j++) for(int k = 0; k < maze[j].length; k++) if (visited[j][k]) System.out.print("x"); else System.out.print(maze[j][k]); System.out.print(" "); } else if (maze[curx][cury] == 'x' || visited[curx][cury]) continue; else if (maze[curx][cury] == '_') { visited[curx][cury] = true; traverse(curx, cury, maze, visited); visited[curx][cury] = false; } } } public static void main(String[] args) { char[][] maze = { {'*', '#', '_'}, {'_', '_', '_'}, {'_', '_', '$'} }; int[] start = {0, 0}; boolean[][] visited = new boolean[maze.length][maze[0].length]; for (int i = 0; i< maze.length; i++) for (int j = 0; j