B
Borstenhorst
Gast
Hi!
Muss für die Uni ein kleines Java-Programm schreiben.
Das ganze soll ein Minesweeper-Clone werden.
Nun zu meinem Problem.
Es gibt 2 2dimensionale Arrays. Ein Lösungsfeld wo die Minen reinkommen und danach eine Lösungs "Karte" generiert wird. Und ein Spielfeld wo erstmal alles mit "x"en gefüllt ist und man nach und nach aufdecken muss. Wenn auf dem Spielfeld eine 0 aufgedeckt wird dann soll geguckt werden ob sich um diese 0 noch andere 0en auf dem Lösungsfeld befinden und wenn ja sollen diese ebenfalls aufgedeckt werden also im Spielfeld auf "0" gesetzt werden.
Da ich jetzt aber nicht nur die 0en um die auswahlzelle aufdecken möchte sondern alle die sich außenherrum befinden dachte ich mir ich rufe die aufdeckfunktion für jede neu entdeckte 0 auf. Habe die stelle auskommentiert, ohne den selbstaufruf läuft es(siehe unten nur um die auswahlzelle herrum).
Theoretisch gut, praktisch: java.lang.StackOverflowError
z=zu begutachtende Zelle (Zeile)
s=zu begutachtende Zelle (Spalte)
zs=groesse des arrays (Zeile)
ss=groesse des arrays (Spalte)
minenfeld=loesungsfeld
Um mal zu zeigen wie die beiden Felder aussehen (auswahlzelle 1 1):
Minenfeld
0000000
0000000
0000000
0000000
0000000
1100000
m100000
Spielfeld
000xxxx
000xxxx
000xxxx
xxxxxxx
xxxxxxx
xxxxxxx
xxxxxxx
Vielen Dank für eure Hilfe!
Muss für die Uni ein kleines Java-Programm schreiben.
Das ganze soll ein Minesweeper-Clone werden.
Nun zu meinem Problem.
Es gibt 2 2dimensionale Arrays. Ein Lösungsfeld wo die Minen reinkommen und danach eine Lösungs "Karte" generiert wird. Und ein Spielfeld wo erstmal alles mit "x"en gefüllt ist und man nach und nach aufdecken muss. Wenn auf dem Spielfeld eine 0 aufgedeckt wird dann soll geguckt werden ob sich um diese 0 noch andere 0en auf dem Lösungsfeld befinden und wenn ja sollen diese ebenfalls aufgedeckt werden also im Spielfeld auf "0" gesetzt werden.
Da ich jetzt aber nicht nur die 0en um die auswahlzelle aufdecken möchte sondern alle die sich außenherrum befinden dachte ich mir ich rufe die aufdeckfunktion für jede neu entdeckte 0 auf. Habe die stelle auskommentiert, ohne den selbstaufruf läuft es(siehe unten nur um die auswahlzelle herrum).
Theoretisch gut, praktisch: java.lang.StackOverflowError
z=zu begutachtende Zelle (Zeile)
s=zu begutachtende Zelle (Spalte)
zs=groesse des arrays (Zeile)
ss=groesse des arrays (Spalte)
minenfeld=loesungsfeld
Java:
//Methode Aufdecken
public static char[][] aufdecken(char[][]spielfeld,char[][]minenfeld, int z, int s, int zs, int ss) {
int zstart; //Startposition suche Zeile
int zstop; //Stopposition suche Zeile
int sstart; //Startposition suche Spalte
int sstop; //Stopposition suche Spalte
//Verhindern das Suchzelle auserhalb des Feldes liegt
if(z>0){zstart=z-1;}else{zstart=z;}
if(z<zs-1){zstop=z+1;}else{zstop=z;}
if(s>0){sstart=s-1;}else{sstart=s;}
if(s<ss-1){sstop=s+1;}else{sstop=s;}
//Suchen nach umliegenden 0en
for(int lz=zstart;lz<=zstop;lz++)
{
for(int ls=sstart;ls<=sstop;ls++)
{
if(minenfeld[lz][ls]=='0')
{
spielfeld[lz][ls]='0';
//spielfeld=aufdecken(spielfeld,minenfeld,lz,ls,zs,ss); //Netter versuch aber geht nicht...
}
}
}
return spielfeld;
}
Um mal zu zeigen wie die beiden Felder aussehen (auswahlzelle 1 1):
Minenfeld
0000000
0000000
0000000
0000000
0000000
1100000
m100000
Spielfeld
000xxxx
000xxxx
000xxxx
xxxxxxx
xxxxxxx
xxxxxxx
xxxxxxx
Vielen Dank für eure Hilfe!