Hallo,
ich will das Spiel "Snake" nachprogrammieren. Nun habe ich mich gefragt, wie ich am Besten die aktuelle Position der Schlange speichere.
Bedingungen sind:
-Der Kopf der Schlange muss besonders gekennzeichnet sein(Für späteres Zeichnen).
-Die gefressenen Objekte müssen den Rumpf der Schlange durchlaufen können und daher auch besonders gekennzeichnet werden.(Für späteres Zeichnen)
-Das Ganze muss möglichst performant entwickelt werden.
Da ich gerade dabei bin "Java ist auch eine Insel" zu lesen und schon Kapitel 12 gelesen habe, weiß ich, dass es viele verschiedene Möglichkeiten gäbe die Position der Schlange und die Positionen der besonders gekennzeichneten Objekte(Kopf, gefressenes Objekt) darzustellen.
Anfangs habe ich es mit einem zweidimensionalem Array probiert. Leereflächen waren Nullen, die Schlange wurde durchnummeriert. Der Kopf war 1 und das Ende war laengeSnake. Das habe ich dann jedoch verworfen als ich mir Gedanken dazu machte, wie ich denn später die Schlange bewege. Ich denke das wäre ziemlich unperformant, da ich alle Zahlen > 0 im Array verschieben müsste.
Ich habe so das Bauchgefühl, dass es eine Liste gibt die genau für meinen Bedarf gemacht ist Aber ich glaube, dass mir da noch das Verständnis und die Erfahrung fehlt die richtige auszuwählen.
Spontan würde ich sagen, dass die LinkedList iene gute Wahl wäre, da ich da das gefressene Objekt vielleicht gut durchlaufen lassen könnte ohne alles zu verschieben. Aber dafür brächte ich denke ich eine mehrdimensionale LinkedList(Gibt es sowas?) in dieser Form: (Position in der Schlange)(X-Position)(Y-Position). Wenn ich später die Schlange bewege, müsste ich je nach Bewegungs Richtung einen Eintrag vorne hinzufügen mit Position in der Schlange = 1. Den letzten müsste ich einfach löschen und alle anderen Elemente müssten X-, Y-Position und Positionin der Schlange + 1 ihres Vorgängers annehmen.
Wenn ich mir das bei jeder Bewegung vorstelle, erscheint mir das leider auch unperformant und dabei ist der Fall, dass ein Objekt gegeessen wird noch gar nicht betrachtet. Ich glaube da gibt es etwas besseres.
Bitte sagt mir nicht, dass ich mit etwas kleinerem anfangen soll. An soetwas wie die zahlen von 1 - 100 auflisten habe ich keinen Spaß. Und es bringt auch nichts, wenn man nur das macht was man bereits kann. Ich teile mir da lieber das große Problem "Snake" in kleine Probleme auf wie jetzt zum Beispiel "Position der Schlange". Probleme wie "Bewegung der Schlange" kommen erst später, dürfen aber jetzt auch nicht außer betracht gelassen werden, da die Darstellung der Position ja so gewählt werden muss, dass eine Bewegung möglichst einfach und performant ist. Die Frage ist jetzt nur wie verwalte ich die Position der Schlange?
mfg hyperion
ich will das Spiel "Snake" nachprogrammieren. Nun habe ich mich gefragt, wie ich am Besten die aktuelle Position der Schlange speichere.
Bedingungen sind:
-Der Kopf der Schlange muss besonders gekennzeichnet sein(Für späteres Zeichnen).
-Die gefressenen Objekte müssen den Rumpf der Schlange durchlaufen können und daher auch besonders gekennzeichnet werden.(Für späteres Zeichnen)
-Das Ganze muss möglichst performant entwickelt werden.
Da ich gerade dabei bin "Java ist auch eine Insel" zu lesen und schon Kapitel 12 gelesen habe, weiß ich, dass es viele verschiedene Möglichkeiten gäbe die Position der Schlange und die Positionen der besonders gekennzeichneten Objekte(Kopf, gefressenes Objekt) darzustellen.
Anfangs habe ich es mit einem zweidimensionalem Array probiert. Leereflächen waren Nullen, die Schlange wurde durchnummeriert. Der Kopf war 1 und das Ende war laengeSnake. Das habe ich dann jedoch verworfen als ich mir Gedanken dazu machte, wie ich denn später die Schlange bewege. Ich denke das wäre ziemlich unperformant, da ich alle Zahlen > 0 im Array verschieben müsste.
Ich habe so das Bauchgefühl, dass es eine Liste gibt die genau für meinen Bedarf gemacht ist Aber ich glaube, dass mir da noch das Verständnis und die Erfahrung fehlt die richtige auszuwählen.
Spontan würde ich sagen, dass die LinkedList iene gute Wahl wäre, da ich da das gefressene Objekt vielleicht gut durchlaufen lassen könnte ohne alles zu verschieben. Aber dafür brächte ich denke ich eine mehrdimensionale LinkedList(Gibt es sowas?) in dieser Form: (Position in der Schlange)(X-Position)(Y-Position). Wenn ich später die Schlange bewege, müsste ich je nach Bewegungs Richtung einen Eintrag vorne hinzufügen mit Position in der Schlange = 1. Den letzten müsste ich einfach löschen und alle anderen Elemente müssten X-, Y-Position und Positionin der Schlange + 1 ihres Vorgängers annehmen.
Wenn ich mir das bei jeder Bewegung vorstelle, erscheint mir das leider auch unperformant und dabei ist der Fall, dass ein Objekt gegeessen wird noch gar nicht betrachtet. Ich glaube da gibt es etwas besseres.
Bitte sagt mir nicht, dass ich mit etwas kleinerem anfangen soll. An soetwas wie die zahlen von 1 - 100 auflisten habe ich keinen Spaß. Und es bringt auch nichts, wenn man nur das macht was man bereits kann. Ich teile mir da lieber das große Problem "Snake" in kleine Probleme auf wie jetzt zum Beispiel "Position der Schlange". Probleme wie "Bewegung der Schlange" kommen erst später, dürfen aber jetzt auch nicht außer betracht gelassen werden, da die Darstellung der Position ja so gewählt werden muss, dass eine Bewegung möglichst einfach und performant ist. Die Frage ist jetzt nur wie verwalte ich die Position der Schlange?
mfg hyperion