Hallo,
ich bin gerade dabei eine KI zu programmieren, die einen Käfer auf einem Spielfeld steuern soll. Das Spielfeld besteht aus 20x20 Feldern. Bei jedem Zug kann der Käfer ein Feld weit fahren und sollte die Blätter, die auf den Feldern liegen, einsammeln.
Im Moment hänge ich an einer rekursiven Methode, die die Anzahl der Blätter, die nebeneinander liegen, zählen soll. Diese Methode gibt immer wenn mehrere Blätter nebeneinander liegen einen StackOverflowError aus und ich konnte auch nach längerem Suchen den Fehler nicht finden. Auch wenn es nur 2 Blätter sind und die Methode sich ja eigentlich nicht allzu oft aufrufen dürfte stürzt alles ab.
Es wäre nett, wenn mir jemand helfen könnte.
Code:
Fehler:
ich bin gerade dabei eine KI zu programmieren, die einen Käfer auf einem Spielfeld steuern soll. Das Spielfeld besteht aus 20x20 Feldern. Bei jedem Zug kann der Käfer ein Feld weit fahren und sollte die Blätter, die auf den Feldern liegen, einsammeln.
Im Moment hänge ich an einer rekursiven Methode, die die Anzahl der Blätter, die nebeneinander liegen, zählen soll. Diese Methode gibt immer wenn mehrere Blätter nebeneinander liegen einen StackOverflowError aus und ich konnte auch nach längerem Suchen den Fehler nicht finden. Auch wenn es nur 2 Blätter sind und die Methode sich ja eigentlich nicht allzu oft aufrufen dürfte stürzt alles ab.
Es wäre nett, wenn mir jemand helfen könnte.
Code:
Java:
public void zaehleHaufenGroesse(int x, int y){
if(y != 0 && karte[x][y-1] == 2){ //2 = Blatt
haufenGroesse++; //haufenGroesse = Anzahl der Blätter, die
zaehleHaufenGroesse(x, y-1); //nebeneinander liegen
}
if(y != 19 && karte[x][y+1] == 2){
haufenGroesse++;
zaehleHaufenGroesse(x, y+1);
}
if(x != 0 && karte[x-1][y] == 2){
haufenGroesse++;
zaehleHaufenGroesse(x-1, y);
}
if(x != 19 && karte[x+1][y] == 2){
haufenGroesse++;
zaehleHaufenGroesse(x+1, y);
}
}
Fehler:
Code:
Exception in thread "main" java.lang.StackOverflowError
at AI.zaehleHaufenGroesse(AI.java:38)
at AI.zaehleHaufenGroesse(AI.java:44)
at AI.zaehleHaufenGroesse(AI.java:38)
at AI.zaehleHaufenGroesse(AI.java:44)
at AI.zaehleHaufenGroesse(AI.java:38)
Zuletzt bearbeitet: