Hi,
ich schreib gerade just 4 fun einen Mienesweeper Clone und an der Spannsten Stelle eigendlich, beiß ich mir die zähne aus.
Und zwar bei der Methode wie ich bei Click auf ein Leeres Feld dann das ganze sich weiter "aufklickt" wen die Felder Leer sind bis zu einer zahl.
Nach vielem Gegoogle && auch nach Durchsuchen des Boards bin ich darauf gestoßen das gnaze mit einer rekursive Methode zu lösen hier bekomme ich aber ein Stack OverFlow. Und finde nicht heraus warum.
Hier mal mein Code:
Die Ausgabe der des Ganzen beim Debuggen sied dan so aus
Also bricht er leider nicht ab.
Hab ihr eine Idee was ich falsch mache ?
Grüße und Thx
ich schreib gerade just 4 fun einen Mienesweeper Clone und an der Spannsten Stelle eigendlich, beiß ich mir die zähne aus.
Und zwar bei der Methode wie ich bei Click auf ein Leeres Feld dann das ganze sich weiter "aufklickt" wen die Felder Leer sind bis zu einer zahl.
Nach vielem Gegoogle && auch nach Durchsuchen des Boards bin ich darauf gestoßen das gnaze mit einer rekursive Methode zu lösen hier bekomme ich aber ein Stack OverFlow. Und finde nicht heraus warum.
Hier mal mein Code:
Java:
package minesweeper.logic;
import minesweeper.api.Field;
public class CanOpenNextField {
public void open(int x, int y, Field[][] gameBoard) {
// prüfen ob rekursion beendet werden muss
if (gameBoard[x][y].isBoombe() == true
|| gameBoard[x][y].isMarked() == true
|| isValidField(x, y, gameBoard) == false) {
System.out.println("Abbruch");
return;
}
// feld aufdecken
gameBoard[x][y].setIsOpen(true);
System.out.println("Ich bin X : " + x);
System.out.println("Ich bin y : " + y);
System.out.println("Is Vaild Field :" + isValidField(x, y, gameBoard));
// in alle 4 Richtungen weitermachen
open(x - 1, y, gameBoard);
open(x + 1, y, gameBoard);
open(x, y + 1, gameBoard);
open(x, y - 1, gameBoard);
}
public boolean isValidField(int x, int y, Field[][] gameBoard) {
if (x <= 0 || y >= gameBoard.length -1) {
System.out.println();
return false;
}
return true;
}
}
Die Ausgabe der des Ganzen beim Debuggen sied dan so aus
Java:
Ich bin X : 4
Ich bin y : 4
Is Vaild Field :true
Ich bin X : 3
Ich bin y : 4
Is Vaild Field :true
Ich bin X : 2
Ich bin y : 4
Is Vaild Field :true
Ich bin X : 1
Ich bin y : 4
Is Vaild Field :true
Abbruch
Ich bin X : 2
Ich bin y : 4
Is Vaild Field :true
Ich bin X : 1
Ich bin y : 4
Is Vaild Field :true
Abbruch
Ich bin X : 2
Ich bin y : 4
Is Vaild Field :true
Ich bin X : 1
Ich bin y : 4
Is Vaild Field :true
Also bricht er leider nicht ab.
Hab ihr eine Idee was ich falsch mache ?
Grüße und Thx