Spielfeld mit 10x10 Felder

m.i.m.i

Mitglied
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
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:
S

static123454

Gast
Java:
public static int status;//0:leer, 1:fuchs, 2:hase

Dann erläuter erstmal, warum der Status static seien soll ;)
 

m.i.m.i

Mitglied
hoppla soll eigentlich nicht so sein

geänderte klasse feld:

Java:
public class Feld{

	private int status;//0:leer, 1:fuchs, 2:hase

	//konstruktor
	public Feld()
	{	
	status=0;
	}

	//get set
	public int getStatus()
	{
		return status;
	}
	public void setStatus(int s)
	{
		status=s;
	}

}

daran lags aber leider nicht ich glaub das problem ist ein grundsätzliches :(
 
S

SlaterB

Gast
Thema erfolgreich beendet oder besteht noch ein Problem?
besser immer deutlich den Stand dokumentieren, darf auch ruhig etwas dauern mit der Antwort

edit: ok, mit Nachtrag

edit: es ist nicht sichtbar wie das Array befüllt wird, vielleicht in allem dasselbe Objekt,
besser ein vollständiges Testprogramm: Array erstellen, befüllen, eins setzen, für alle ausgeben, überall gleich?
 

X5-599

Top Contributor
Entweder ich hab beim Überfliegen etwas übersehen, oder du erzeugst nirgens ein Feld Objekt. Ich tippe mal du machst das an nicht gezeigter Stelle. Und weiter tippe ich du erzeugst genau 1 Feld Objekt und legst das in alle "Fächer" deines zweidimensionalen Arrays. Darum enthält jedes Fach eine Referenz auf dasselbe Objekt.
Lieber sowas:

Java:
for (int i=0;i<10;i++){
            for (int j=0;j<10;j++){
                spielFeld[i][j] = new Feld();
                //... set status oder was auch immer
            }
}
 

Spin

Top Contributor
Entweder ich hab beim Überfliegen etwas übersehen, oder du erzeugst nirgens ein Feld Objekt. Ich tippe mal du machst das an nicht gezeigter Stelle. Und weiter tippe ich du erzeugst genau 1 Feld Objekt und legst das in alle "Fächer" deines zweidimensionalen Arrays. Darum enthält jedes Fach eine Referenz auf dasselbe Objekt.

Gerade beim Schreiben dein Beitrag gesehen :toll:

Genau, der TO erstellt zwar ein Objektarray, aber keine Objekte an der Stelle.

@ Slater

edit: es ist nicht sichtbar wie das Array befüllt wird, vielleicht in allem dasselbe Objekt,
besser ein vollständiges Testprogramm: Array erstellen, befüllen, eins setzen, für alle ausgeben, überall gleich?

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();
        }
         }

War doch zu sehen???:L
 
S

SlaterB

Gast
@Spin
das was X5-599 postet ist nicht zu sehen,

dass keine NullPointerException erwähnt wird läßt vermuten dass das Array doch befüllt ist, wann und wo auch immer, aber womit?
 
S

static123454

Gast
[...]

@ Slater



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();
        }
         }

War doch zu sehen???:L

In der ersten Version hat er jedoch auf die static getter/setter zugegriffen, wodurch er keine Objekte erstellen musste. Nach der Korrektur müsste er das jedoch getan haben oder, wie erwähnt, eine NPE erhalten.
 

ursteiner

Mitglied
Code:
public static int status;//0:leer, 1:fuchs, 2:hase

Wenn du verschiedene Objekte mit verschiedenen stati erzeugen willst, darfst du das Feld status nicht static machen.
Genau wie die Methode get und set Status.
 

m.i.m.i

Mitglied
Java:
for (int i=0;i<10;i++){
			for (int j=0;j<10;j++){
				spielFeld[i][j]= new Feld();
				spielFeld[i][j].setStatus(0);
				System.out.print(spielFeld[i][j].getStatus()+"|");
			
			}System.out.println();
		
		}

diese zeile wars vielen dank an alle!

@SlaterB: hab mich schon gewundert warum jetzt diese nullpointerexception aufgetaucht ist???:L

habt geduld mit mir ich kämpfe mich grad im selbststudium durch mit private, public, static, ....
 
S

static123454

Gast
Code:
public static int status;//0:leer, 1:fuchs, 2:hase

Wenn du verschiedene Objekte mit verschiedenen stati erzeugen willst, darfst du das Feld status nicht static machen.
Genau wie die Methode get und set Status.
[OT]Hast du den Thread und die bisherigen Antworten vorher vielleicht mal kurz überflogen? :([/OT]

@m.i.m.i.
Wenn neue Fehler auftreten, wäre es Hilfreich diese auch zu benennen. Sonst kann man dir schlecht weiterhelfen.
 
S

SlaterB

Gast
> ich dachte das wär wieder ein anderer fehler gewesen

war es ja quasi auch und genau das ruhig erwähnen statt mit 'daran lags aber leider nicht' anzudeuten, das Problem wäre noch dasselbe, und weitere Lösungen suchen zu lassen

freilich kann man sämtliche Umstände auch erahnen, haben ja auch einige
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Ostkreuz Spielfeld Schatz erstellen Java Basics - Anfänger-Themen 5
R Erste Schritte Probleme bei 2D Spielfeld, mit einzufügender "Person" Java Basics - Anfänger-Themen 5
E Spielfeld mit Spielern belegen? Java Basics - Anfänger-Themen 4
L Simples Spielfeld erzeugen Java Basics - Anfänger-Themen 1
W Erste Schritte Ein Spielfeld aufbauen/generieren Java Basics - Anfänger-Themen 1
Y Erste Schritte Spielfeld, Array füllen mit Treffern...?! Java Basics - Anfänger-Themen 3
D Erste Schritte spielfeld als Datenspeicher implementieren Java Basics - Anfänger-Themen 1
D spielfeld als Datenspeicher implementieren Java Basics - Anfänger-Themen 5
T TicTacToe Spielfeld Java Basics - Anfänger-Themen 7
masii Spielfeld auf Konsole ausgeben Java Basics - Anfänger-Themen 3
S Spielfeld Ausgabe mit 2 for - Schleifen möglich ? Java Basics - Anfänger-Themen 4
F Mausposition im Spielfeld auslesen Java Basics - Anfänger-Themen 26
P Spielfeld für SchiffeVersenken auf Kommandozeilenebene Java Basics - Anfänger-Themen 5
StickToFreak Mit GameLoop "Spielfeld-Begrenzung" Java Basics - Anfänger-Themen 24
J Multiplikationstabelle mit 10x10 Array Java Basics - Anfänger-Themen 4
N zweidimensionales 10x10 Feld erstellen Java Basics - Anfänger-Themen 3
W 10x10 Feld mit Zufallszahlen erstellen Java Basics - Anfänger-Themen 4
U HILFE! - per ActionListener Felder enablen....... Java Basics - Anfänger-Themen 5
M Werte in Felder speichern und geordnet ausgeben Java Basics - Anfänger-Themen 8
A Felder: arithmetisches und geometrisches Mittel Java Basics - Anfänger-Themen 3
L Datentypen Deklarierte Felder einer Generic Klasse bestimmen Java Basics - Anfänger-Themen 7
Elyt Bei Monopoly werden Felder übersprungen Java Basics - Anfänger-Themen 2
L Listen und Felder Java Basics - Anfänger-Themen 2
neerual Int-Felder erzeugen Java Basics - Anfänger-Themen 16
P Felder König array Java Basics - Anfänger-Themen 6
T Art 4 Felder Matrix Memory Java Basics - Anfänger-Themen 2
P Zugriff auf Felder in ArrayList Objekten Java Basics - Anfänger-Themen 2
D Felder Java Basics - Anfänger-Themen 2
D Übung Felder java Error kompilieren Java Basics - Anfänger-Themen 4
M Felder leer - überprüfen? Java Basics - Anfänger-Themen 2
S reflection und felder Java Basics - Anfänger-Themen 12
X Verknüpfte Excel Felder mitändern Java Basics - Anfänger-Themen 6
Z Erste Schritte 9x9 Felder Erzeugen+Aufrufen Java Basics - Anfänger-Themen 1
S Wie instanziert man Felder? Java Basics - Anfänger-Themen 11
V Zwei Felder Adderen Java Basics - Anfänger-Themen 2
W Methoden Falsche Felder von Methode belgegt Java Basics - Anfänger-Themen 14
E Felder bei falscher Eingabe leeren Java Basics - Anfänger-Themen 8
S Felder mit Variablen/Tabellen verknüpfen! Java Basics - Anfänger-Themen 3
M Felder mit Methode verändern Java Basics - Anfänger-Themen 11
W Datentypen Felder mit Potenzen Java Basics - Anfänger-Themen 31
C Erste Schritte felder, die public final sind Java Basics - Anfänger-Themen 6
B Frage zur Effizienz - alle Array-Felder initialisieren oder jedes Feld auf null prüfen? Java Basics - Anfänger-Themen 4
C Felder(Größte Zahl, Index) Java Basics - Anfänger-Themen 6
K Felder Java Basics - Anfänger-Themen 5
M 3 Felder, Barcode, reinschreiben in die DB Java Basics - Anfänger-Themen 30
D Datentypen Felder: Deklaration und Initialisierung Java Basics - Anfänger-Themen 5
C Java Felder bearbeiten Hilfe Java Basics - Anfänger-Themen 4
H Felder mit unterschiedl. Typen sortieren Java Basics - Anfänger-Themen 5
B n-dimensionale Felder in m-dimensionale Felder konvertiert Java Basics - Anfänger-Themen 30
H felder vergleichen Java Basics - Anfänger-Themen 6
F Felder von aufrufender Klasse ändern Java Basics - Anfänger-Themen 16
A Felder Java Basics - Anfänger-Themen 7
A Mehrdimensionale Felder Java Basics - Anfänger-Themen 18
C Felder im Dialog zurücksetzen Java Basics - Anfänger-Themen 3
E Wechselnde Felder erzeugen Java Basics - Anfänger-Themen 15
maddin86 Eine Methode für ein- und zweidimensionale double Felder als Parameter? Java Basics - Anfänger-Themen 5
A Felder- Minimum/Maximum Java Basics - Anfänger-Themen 2
D Felder Java Basics - Anfänger-Themen 7
D Felder Java Basics - Anfänger-Themen 2
T Border Layout alle mittleren felder gleich groß Java Basics - Anfänger-Themen 3
C Speicherverwaltung für Felder Java Basics - Anfänger-Themen 8
S EINDIMENSIONALE FELDER? Java Basics - Anfänger-Themen 23
G 3. Aufgaben und komme nicht weiter (Felder, Methoden) Java Basics - Anfänger-Themen 3
M Felder (Wo liegt der Fehler?) Java Basics - Anfänger-Themen 2
D Wie werden Felder grau? Java Basics - Anfänger-Themen 26
S generische Felder Java Basics - Anfänger-Themen 2
A Felder Java Basics - Anfänger-Themen 3
D String mit split teilen und leere Felder behalten Java Basics - Anfänger-Themen 4
R Felder unterschiedlichen Typs Java Basics - Anfänger-Themen 9
J 2 Felder aus DB selektieren u. in JList - eines verstecken? Java Basics - Anfänger-Themen 7
T Suche über mehrere Felder value = key = value Java Basics - Anfänger-Themen 3
B Array doppelt Felder löschen Java Basics - Anfänger-Themen 27
B clone(), Clonable und Felder von Interfacetypen Java Basics - Anfänger-Themen 3
G Felder kopieren Java Basics - Anfänger-Themen 8
G Felder-Länge Java Basics - Anfänger-Themen 2
G Felder zurückgeben? Java Basics - Anfänger-Themen 3
C Früheste Datum aus 3 Felder Java Basics - Anfänger-Themen 20
M Felder innerhalb eines Arrays vergleichen Java Basics - Anfänger-Themen 2
D Felder vergleichen Java Basics - Anfänger-Themen 14
D Verbindung von Methoden und Felder Java Basics - Anfänger-Themen 3
A Aus dem menü heraus andere Felder bearbeiten Java Basics - Anfänger-Themen 2
S Statische Felder - statische Methoden Java Basics - Anfänger-Themen 2
G variable felder in java? geht das? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben