Hallo,
ich möchte nun in meiner Klasse Spielfeld eine linksKlick Methode implementieren, welches das Anklicken eines Feldes darstellt. Dabei soll das angeklickte Feld und evtl. benachbarte Felder offengelegt werden.
Nun stellt sich mir eine grobe Frage.
Wie implementiere ich dies?
ich möchte nun in meiner Klasse Spielfeld eine linksKlick Methode implementieren, welches das Anklicken eines Feldes darstellt. Dabei soll das angeklickte Feld und evtl. benachbarte Felder offengelegt werden.
Nun stellt sich mir eine grobe Frage.
Wie implementiere ich dies?
Java:
class Feld{
boolean istMine;
boolean offen;
int anzahl;
/*
Zeichen:
istMine = x
*/
public void Feld(){
offen = false;
istMine = false;
anzahl = 0;
}
public boolean getMine(){
return istMine;
}
public void setMine(){
istMine=true;
}
public void setNachbar(){
anzahl++;
}
public String printFeld(){
if(istMine==true){
return("X");
}
else{
return Integer.toString(anzahl);
}
}
}
Java:
import java.util.Random;
class Spielfeld{
int laenge; //y hoehe
int breite; //x breite
int anzahl;
Feld[][] EndeSF ;
Spielfeld(int l, int b, int a){
//Feldererstellung
laenge = l;
breite = b;
anzahl = a;
Feld[][] spfe = new Feld[breite][laenge];
for(int h1=0;h1<laenge;h1++){
for(int h2=0; h2<breite;h2++){
spfe[h2][h1] = new Feld();
}
}
//Minenverteilung
Random rand = new Random();
for(int h1=0; h1<anzahl;h1++){
int rb =rand.nextInt(breite);
int rl = rand.nextInt(laenge);
if(spfe[rb][rl].istMine==false){
spfe[rb][rl].setMine();
//linker Rand
if(rb!=0){
if(rl!=0){
spfe[rb-1][rl-1].setNachbar();
}
if(rl!=laenge-1){
spfe[rb-1][rl+1].setNachbar();
}
spfe[rb-1][rl].setNachbar();
}
//rechter Rand
if(rb!=breite-1){
if(rl!=0){
spfe[rb+1][rl-1].setNachbar();
}
if(rl!=laenge-1){
spfe[rb+1][rl+1].setNachbar();
}
spfe[rb+1][rl].setNachbar();
}
//oben und unten
if(rl!=0){
spfe[rb][rl-1].setNachbar();
}
if(rl!=laenge-1){
spfe[rb][rl+1].setNachbar();
}
}
else {
h1--;
}
}
EndeSF=spfe;
}
public void printSPFE(){
for(int h1=0;h1<laenge;h1++){
System.out.print("\n");
for(int h2=0; h2<breite;h2++){
System.out.print(EndeSF[h2][h1].printFeld()+" ");
}
}
}
}