hallo,
hab eine grundsätzliche frage wie man sowas am besten angeht:
habe ein spielfeld mit 10x10 felder in jedes feld soll eine instanz der klasse "Feld", die folgenden status entweder 0 für leer, 1 für objekt 1, 2 für objekt 2 haben kann. dieser status kann mit getStatus() abgerufen werden und mit setStatus(0/1/2) gesetzt werden. soweit sollte mal alles ok sein.
klasse Feld.java
aber dann das problem: mein ansatz wäre in der klasse Spiel wird das Spielfeld generiert mit einem 2-dim Array.
dann im konstruktor initialisiert mit jeweils 0:
nur wenn ich jetzt versuche in einer anderen methode ein feld auf 2 zu setzen, setzt er alle instanzen auf 2 wenn ich das spielfeld ausgebe? warum ist das so? muss ich irgendwie anders das spielfeld anlegen?
hab eine grundsätzliche frage wie man sowas am besten angeht:
habe ein spielfeld mit 10x10 felder in jedes feld soll eine instanz der klasse "Feld", die folgenden status entweder 0 für leer, 1 für objekt 1, 2 für objekt 2 haben kann. dieser status kann mit getStatus() abgerufen werden und mit setStatus(0/1/2) gesetzt werden. soweit sollte mal alles ok sein.
klasse Feld.java
Java:
public class Feld{
public static int status;//0:leer, 1:fuchs, 2:hase
//konstruktor
public Feld()
{
status=0;
}
//get set
public static int getStatus()
{
return status;
}
public static void setStatus(int s)
{
status=s;
}
}
aber dann das problem: mein ansatz wäre in der klasse Spiel wird das Spielfeld generiert mit einem 2-dim Array.
Java:
Feld[][] spielFeld = new Feld[10][10];
dann im konstruktor initialisiert mit jeweils 0:
Java:
public Spiel()
{
//initialisiere Felder mit 0
for (int i=0;i<10;i++){
for (int j=0;j<10;j++){
spielFeld[i][j].setStatus(0);
System.out.print(spielFeld[i][j].getStatus()+"|");
}System.out.println();
}
}
nur wenn ich jetzt versuche in einer anderen methode ein feld auf 2 zu setzen, setzt er alle instanzen auf 2 wenn ich das spielfeld ausgebe? warum ist das so? muss ich irgendwie anders das spielfeld anlegen?
Java:
public void verteileHasen()
{
spielFeld[1][1].setStatus(2);
//gib aus spielfeld
for (int c=0;c<10;c++){
for (int d=0;d<10;d++){
System.out.print(spielFeld[c][d].getStatus()+"|");
}System.out.println();
}
}
Zuletzt bearbeitet von einem Moderator: