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;//Eigenschaft
boolean istgeoeffnet;
int anzahlMine;
Feld(){
istMine = false; //konstruktur
istgeoeffnet = false;
anzahlMine = 0;
}
void setMine(){
istMine= true; //Methode
}
boolean getMine(){
return istMine;
}
void setgeoeffnet(){
istgeoeffnet = true;
}
boolean getgeoeffnet(){
return istgeoeffnet;
}
void setanzahl(int a){
anzahlMine = a;
}
int getanzahl(int a){
return anzahlMine;
}
}
class Spielfeld{
int h;
int b;
int am;
Feld[][]s;
Spielfeld(int h, int b, int am){
this.h = h;
this.b = b;
this.am= am;
s = new Feld[h][B];
for(int i=0; i<h;i++){
for(int j=0; j<b;j++){
s[I][j] = new Feld();
}
}
setMine();
setanzahl();
}
public void setMine(){
boolean anzahlMine = true;
int counter = 0;
if(am<=0){
anzahlMine = false;
}
while(anzahlMine){
int h = (int)(Math.random()*h);
int b = (int)(Math.random()*b);
if(!s[h][B].getMine()){
s[h][B].setMine();
counter++;
}
if(counter == am){
anzahlMine = false;
}
}
}
public void setanzahl(){
for(int x = 0; x<s.length;x++){
for(int y=0;y<s[0].length;y++){
if(!s[x][y].getMine()){
int nachbar = 0;
if(x<s.length-1 && y>0 && s[x-1][y].getMine()){ // rechts
nachbar++;
}
if(x>0 && s[x-1][y].getMine()){// links
nachbar++;
}
if(x<s.length-1 && y>0 && s[x+1][y-1].getMine()){//hoch rechts
nachbar++;
}
if(x>0 && y>0 && s[x-1][y-1].getMine()){ //hoch links
nachbar++;
}
if(y>0 && s[x][y-1].getMine()){ //hoch
nachbar++;
}
if(y<s[0].length-1 && s[x][y+1].getMine()){// unten
nachbar++;
}
if(x<s.length-1 && y<s[0].length-1 && s[x+1][y+1].getMine()){ // unten rechts
nachbar++;
}
if(x>0 && y<s[0].length-1 && s[x+1][y+1].getMine()){ // unten links
nachbar++;
}
s[x][y].setanzahl(nachbar);
}
}
}
}
public void print(){
for(int i=0; i<h; i++){
System.out.print(" ");
for(int j=0; j<b; j++){
if(s[I][j].getMine()){
System.out.print(" * ");
}else{
System.out.print(" "+s[I][j].getanzahl()+" ");
}
}
}
}
}
class Main{
public static void main(String[] args) {
Spielfeld a = new Spielfeld(5,5,10);//konstruktur
a.print();
}
}
Zuletzt bearbeitet: