Zerstoerer
Lieutenant
- Registriert
- Okt. 2010
- Beiträge
- 685
Hallo zusammen,
hab hier grad ein Problem. Ich muss hier eine Lösung für einen Irrgarten finden. Dabei muss das Programm eben Backtracking sein. Bisjetzt hab ich folgendes:
Es wird zurückgegeben werden, ob ein Weg gefunden wurde oder nicht. Auch muss der kürzeste Weg jeweils mit einem '*' besetzt werden, da er später grün als richtiger Weg markiert wird. Die Wände sind jeweils mit einem '#' markiert. "feld[][]" ist ein zweidimensionales Feld. "startx" und "starty" sind die Startkoordinaten, "zielx" und "ziely" die Zielkoordinaten. Doch irgendwie klappt das noch nicht so ganz.
Muss ich da noch etwas ändern oder ergänzen?
Wäre dankbar für ein paar Ratschläge.
hab hier grad ein Problem. Ich muss hier eine Lösung für einen Irrgarten finden. Dabei muss das Programm eben Backtracking sein. Bisjetzt hab ich folgendes:
Code:
private boolean suche(int x, int y) {
boolean gefunden = false;
if(y!=ziely&&x!=zielx){
feld[x][y] = '*';
if(gefunden != true && feld[x][y+1]!='*' && feld[x][y+1]!='#' ){
suche(x,y+1);
}
else if(gefunden != true && feld[x][y-1]!='*' && feld[x][y-1]!='#' ){
suche(x,y-1);
}
else if(gefunden != true && feld[x+1][y]!='*' && feld[x+1][y]!='#' ){
suche(x+1,y);
}
else if(gefunden != true && x>0 && feld[x-1][y]!='*' && feld[x-1][y]!='#'){
suche(x-1,y);
} else {
feld[x][y] =' ';
}
} else {
gefunden = true;
}
return gefunden;
}
Muss ich da noch etwas ändern oder ergänzen?
Wäre dankbar für ein paar Ratschläge.
Zuletzt bearbeitet: