Hallo zusammen,
nach Tagen des Verzweifelns, hab ich mich entschloßen hier um hilfe zu bitten. Mein Problem:
Ich schreibe an einem Minesweeper und habe mir hierfuer einen Algorithmus ausgedacht, mit dem ich alle leeren Felder um das geklickte Feld aufdecke, wenn dieses auch leer ist.
Bei einer Feldgröße von 10x10 ist das kein problem:
Jedoch, sobald der Index im Array 2-stellig wird geht das nichtmehr. Also bei einer Feldgröße ab 11x11 passiert das:
Hier der Quellcode:
Minesweeper.java
Feld.java
Ich glaube es liegt irgendwo in diesem Bereich:
Minesweeper.java
[JAVA=300]
private void leerAufdecken(Point point){
Point tmp = null;
//<editor-fold defaultstate="collapsed" desc="Von dir Geklaut
">
for (int i = -1; i < 2; i++) {
for (int j = -1; j < 2; j++) {
tmp = new Point(point.x+i, point.y+j);
if (!outOfBound(tmp) && !pruefListe.contains(tmp)) {
pruefListe.add(tmp);
}
}
}
//</editor-fold>
for(Point p : pruefListe){
if(spielFeld[p.x][p.y].aufdecken() == FeldStatus.LEER){//Hier eigentlich minenAnzeige hochzählen, da eventuell schon entschaerft gewesen
leerAufdecken(p);
break;
}
}
pruefListe.clear();
}
[/code]
Feld.java
[JAVA=47]
public FeldStatus aufdecken() {
if (status == FeldStatus.ZU) {
if (minenAußenrum == 0) {
status = FeldStatus.LEER;
} else if (mine) {
this.setBackground(hintergrundGrau);
this.setIcon(bildMinen);
} else {
this.setIcon(null);//Hier eigentlich minenAnzeige hochzählen, da eventuell schon entschaerft gewesen
this.setBackground(hintergrundGrau);
this.setText("" + minenAußenrum + "");
status = FeldStatus.OFFEN;
}
} else if (status == FeldStatus.LEER) {
this.setIcon(null);//Hier eigentlich minenAnzeige hochzählen, da eventuell schon entschaerft gewesen
this.setBackground(hintergrundGrau);
status = FeldStatus.OFFEN;
}
return status;
}
[/code]
Ich hoffe einer von euch kann mir weiterhelfen. Es kommen keine Kompielerfehler oder Exceptions! Also muss es was mit der Logik zu tun haben. Ich bin am Verzweifeln
!
Das ganze Projekt ist in Netbeans geschrieben. Downloaden kann man es hier:
http://rapidshare.com/files/444891587/Minesweeper.zip
nach Tagen des Verzweifelns, hab ich mich entschloßen hier um hilfe zu bitten. Mein Problem:
Ich schreibe an einem Minesweeper und habe mir hierfuer einen Algorithmus ausgedacht, mit dem ich alle leeren Felder um das geklickte Feld aufdecke, wenn dieses auch leer ist.
Bei einer Feldgröße von 10x10 ist das kein problem:

Jedoch, sobald der Index im Array 2-stellig wird geht das nichtmehr. Also bei einer Feldgröße ab 11x11 passiert das:

Hier der Quellcode:
Minesweeper.java
Feld.java
Ich glaube es liegt irgendwo in diesem Bereich:
Minesweeper.java
[JAVA=300]
private void leerAufdecken(Point point){
Point tmp = null;
//<editor-fold defaultstate="collapsed" desc="Von dir Geklaut
for (int i = -1; i < 2; i++) {
for (int j = -1; j < 2; j++) {
tmp = new Point(point.x+i, point.y+j);
if (!outOfBound(tmp) && !pruefListe.contains(tmp)) {
pruefListe.add(tmp);
}
}
}
//</editor-fold>
for(Point p : pruefListe){
if(spielFeld[p.x][p.y].aufdecken() == FeldStatus.LEER){//Hier eigentlich minenAnzeige hochzählen, da eventuell schon entschaerft gewesen
leerAufdecken(p);
break;
}
}
pruefListe.clear();
}
[/code]
Feld.java
[JAVA=47]
public FeldStatus aufdecken() {
if (status == FeldStatus.ZU) {
if (minenAußenrum == 0) {
status = FeldStatus.LEER;
} else if (mine) {
this.setBackground(hintergrundGrau);
this.setIcon(bildMinen);
} else {
this.setIcon(null);//Hier eigentlich minenAnzeige hochzählen, da eventuell schon entschaerft gewesen
this.setBackground(hintergrundGrau);
this.setText("" + minenAußenrum + "");
status = FeldStatus.OFFEN;
}
} else if (status == FeldStatus.LEER) {
this.setIcon(null);//Hier eigentlich minenAnzeige hochzählen, da eventuell schon entschaerft gewesen
this.setBackground(hintergrundGrau);
status = FeldStatus.OFFEN;
}
return status;
}
[/code]
Ich hoffe einer von euch kann mir weiterhelfen. Es kommen keine Kompielerfehler oder Exceptions! Also muss es was mit der Logik zu tun haben. Ich bin am Verzweifeln
Das ganze Projekt ist in Netbeans geschrieben. Downloaden kann man es hier:
http://rapidshare.com/files/444891587/Minesweeper.zip