Einfache Liste erstellen

Xym

Erfahrenes Mitglied
Hallo zusammen,

ich versuche gerade ein Schachspiel zu programmieren und hatte mir überlegt, die Positionen aller Figuren in einer Liste zu speichern.

Das hier ist meine Klasse Liste:
Java:
package game;

public class Liste {

	String name;
	int x, y, color;
	Liste nxt;
	
	public Liste (String name, int x, int y, int color, Liste nxt) {
		this.name = name;
		this.x = x;
		this.y = y;
		this.color = color;
		this.nxt = nxt;
	}
	
	public void out() {
		System.out.println(name);
	}
	
}

Hier wird dann der Name (Bauer, Springer usw.) aufgenommen. Ebenso wie die X und Y Koordinate und die Farbe.
Die Figuren habe ich so aufgenommen:
Java:
public Liste list;

...

list = new Liste("bauer", 0, 1, 0, null);
list.nxt = new Liste("bauer", 1, 1, 0, list);
list.nxt = new Liste("bauer", 2, 1, 0, list);
list.nxt = new Liste("bauer", 3, 1, 0, list);
list.nxt = new Liste("bauer", 4, 1, 0, list);
list.nxt = new Liste("bauer", 5, 1, 0, list);

(Erstmal nur mit Bauern versucht)

Das Problem ist, wenn ich die Liste ausgeben will komm ich in eine Endlosschleife rein.
Habe die Ausgabe so versucht:
Java:
while(list.nxt != null) {
			list.out();
			list = list.nxt;
		}

Liegt der Fehler jetzt nur bei der Ausgabe oder auch an der Klasse selbst?

Und nebenbei gefragt, ist eine Liste am besten zum speichern der Figuren?
 
mal eine blöde frage ... ein schachbrett hat statisch genau 8x8 felder. das schreit doch zunächst mal nach einem 8x8 array?

das finden der positionen bekommst du dann a) durch einfaches iterieren oder b) dadurch dass du jedem spielobjekt seine position propagierst.

darüber hinaus ist das spielfigurenset ebenfalls statisch typisiert, was mir direkt die frage aufwirft, ob es nicht eine abstrakte klasse figur geben sollte, welche dann in unterschiedlichen ausprägungen abgelitten wird (bauer extends figur, dame extends figur etc pp)

das wiederhum hat den vorteil, dass eine figur zum beispiel belegen kann, ob eine zug oder schlagabsicht erlaubt ist (das wiederum eliminiert bei der spiellogik die frage nach dem figurentypen, was einem instanceof gleichkommt was wiederum zurecht als "das goto der javaprogrammierer" verpönt ist).

um deine frage zu beantorten :

soweit ich das aus der ferne beurteilen kann, instanziierst du eine liste, und überschreibst immer nur ein next. gleichzeitig übergibst du die elternliste als next, weswegen du eine endlosschleife bekommst. es gibt bereits eine verkettete liste in java (LinkedList), die dieses Feature implementiert; ich würde allerdings lieber mit objekten und einem array arbeiten.
 
  • Gefällt mir
Reaktionen: Xym
Die Idee mit dem Array hatte ich zuerst auch, doch meine Bedenken waren dabei, wie soll ich unterscheiden um welche Figur es sich handelt?
 

Neue Beiträge

Zurück