hey leute
ich hab in java ein programm geschrieben, welches ein labyrinth - aufgebaut auf zeichen in einem array - erstellt
und dann einen weg durch dieses finden soll (rekursiver algo).
es sollte funktionieren, tut es aber nicht.
ich kann ums verrecken keinen fehler finden.
könnt ihr mir weiterhelfen?
hier mein code:
MfG
ich hab in java ein programm geschrieben, welches ein labyrinth - aufgebaut auf zeichen in einem array - erstellt
und dann einen weg durch dieses finden soll (rekursiver algo).
es sollte funktionieren, tut es aber nicht.
ich kann ums verrecken keinen fehler finden.
könnt ihr mir weiterhelfen?
hier mein code:
public class Maze {
static char[][] maze =new char[10][10];
final static int[] STEPX = { 0, 1, 0,-1 };
final static int[] STEPY = { -1, 0, 1, 0 };
static int step, aktX, aktY;
static void createMaze(){
for(int i=0;i<10;i++){
maze[0]='X';
maze[i][0]='X';
maze[9][i]='X';
maze[i][9]='X'; //erstellen der Ränder
}
for(int k=1; k<9;k++){
for(int j=1;j<9;j++){
Random rWall = new Random(0, 2);
int wall=rWall.readInt();
if(wall==0){
maze[k][j]='X'; //mit zufälligen Wänden befüllen
}else{
maze[k][j]=' ';
}
}
}
maze[1][1]='A';
maze[8][8]='Z'; //setzen von Anfang und Ziel
}
static boolean findWay(char[][] maze1, int i, int j){
int step = -1;
while (step != 3) {
step ++;
int newX = i + STEPX[step];
int newY = j + STEPY[step];
boolean ok = true;
if (newX < 1 || newX >= ok = false;
if (newY < 1 || newY >= ok = false;
if (ok && maze1[newX][newY] !=' ') ok = false;
if(ok){
maze1[newX][newY] = '*';
if (!ausgangGefunden(newX, newY)) {
// rekursiver Aufruf von findWay
if (findWay(maze1, newX, newY)) {
// Lösung gefunden
return true;
} else {
maze1[newX][newY] = ' ';
}
} else return true;
}
}//while
return false;
}
private static boolean ausgangGefunden(int newX, int newY) {
if(newX==8 && newY==8){
return true;
}
return false;
}
static void printMaze(){
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
System.out.print(maze[i][j]);
}
System.out.println();
}
System.out.println();
}
public static void main (String[] args) {
createMaze();
printMaze();
boolean b = findWay(maze, 1, 1);
if (b) System.out.println("Weg gefunden");
else System.out.println("Keinen Weg gefunden");
printMaze();
}
}
MfG