Let’s say we have a 2D-boolean Array as a presentation of a maze, the size of the Array is not fixed and random. The walls are depicted as true:
boolean[][] mazeArray = new boolean[width][height];
The exit of the maze is at a fixed Index. How can I check wether the traversion has reached this certain index or not? My idea was to create an int[ ] to keep track of the position, it gets updated and overwritten with every step:
int[] location = {1,0};
… But I don’t understand why my check in the while-loop doesn’t work:
while( location[0] != (maze[0].length-1) && location[1] != (maze[1].length-2) ) { // traversion with pledge algorithm }
Advertisement
Answer
The problem with your code is that you check wrong items in your maze
array:
maze[0]
is the first “line” of your 2d-arraymaze[1]
is the second “line” of your 2d-array
Proper way of traversing 2d-array is following (I’ve replaced your location
array with separate x
and y
variables to better visualize the algorithm).
My algorithm enters the 2d mazeArray
line by line and then iterates each line’s elements.
public class Maze { public static void main(String[] args) { int width = 20; int height = 20; boolean[][] mazeArray = new boolean[width][height]; int x = 0; int y = 0; while (y < mazeArray.length) { while (x < mazeArray[y].length) { System.out.println("Traverse at (" + x + ", " + y + ")"); x += 1; } x = 0; y += 1; } } }