Designfrage: Welche Liste?

Status
Nicht offen für weitere Antworten.

hyperion

Bekanntes Mitglied
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
 

sliwalker

Top Contributor
Hi,

Snake ist ein gutes Projekt.
Viele Teilbereiche die man überall braucht. Ist schon ok...

Mein Ansatz damals war ein anderer.
Ich habe nicht die ganze Schlange gespeichert, sondern nur die Punkte, an denen die Schlange die Richtung ändert. Je nach Spielfeldgröße gibt es da eine maximale Anzahl an Möglichkeiten. Also ist es ein Array geworden welches "Eckpunkt-Objekte" aufnahm. Diese hatten ein paar KeyInfos.

Ist lange her, aber das wwar damals mein Ansatz. Dadurch dass es ein sortiertes Array war, welches sehr klein blieb und als Wert nur ein Objekt mit ein paar primitiven Datentypen hatte, was das auch sehr performant.

greetz
SLi
 

hyperion

Bekanntes Mitglied
Ah ok ich kann mir gut vorstellen, dass die Speicherung der Ecken besser ist, werde aber dennoch das mit der LinkedList probieren, weil ich irgendwann damit besser umgehen können will;)

mfg hyperion
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Designfrage/Objektorientierung Java Basics - Anfänger-Themen 19
J Einfache Designfrage Java Basics - Anfänger-Themen 4
S Designfrage zu mutable and immutable Java Basics - Anfänger-Themen 23
B Designfrage Java Basics - Anfänger-Themen 2
D Designfrage, mal wieder ^^ Java Basics - Anfänger-Themen 7
S designfrage Java Basics - Anfänger-Themen 7
haemi Designfrage - Strategiemuster. Java Basics - Anfänger-Themen 6
K Interface Designfrage Java Basics - Anfänger-Themen 12
S Designfrage: Packageverwaltung Java Basics - Anfänger-Themen 3
G Designfrage: Daten einlesen und Fortschrittsdialog anzeigen Java Basics - Anfänger-Themen 5
T Designfrage Swing Java Basics - Anfänger-Themen 2
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
N Welche Objekte kann man zu einem Set hinzufügen Java Basics - Anfänger-Themen 4
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
berserkerdq2 Habe zwei exceptions, welche ist ein Kommunikationsfehler und welche ein Ausgabefehler? Java Basics - Anfänger-Themen 4
G Welche Attribute kommen in den Konstruktor? Java Basics - Anfänger-Themen 5
Jambolo Methode, welche die 3 letzten Parameter Werte speichert Java Basics - Anfänger-Themen 20
Q SMS basierte Applikationen, welche Programmiersprache? Java Basics - Anfänger-Themen 8
Igig1 Welche Werte sind als default Werte in einem Array, der als Datentyp eine Klasse hat? Java Basics - Anfänger-Themen 1
D Welche GUI Library für eine Client Server Chat App Java Basics - Anfänger-Themen 14
H Welche Werte bei Objekterzeugung eingeben? Java Basics - Anfänger-Themen 2
Arita welche Fehler gibt es noch? wie kann ich es noch vervollständigen Java Basics - Anfänger-Themen 15
tony241188 Implementieren Sie die Klasse Hersteller, welche die folgenden Elektrogeräte produziert Java Basics - Anfänger-Themen 3
FelixN Teilsummenproblem / welche Datenstruktur Java Basics - Anfänger-Themen 2
P Welche Zeile in Tadople gibt einen compiler error? Java Basics - Anfänger-Themen 5
W Welche Komponente ist geeignet? Java Basics - Anfänger-Themen 1
A Welche Operation ist das? Java Basics - Anfänger-Themen 2
J Welche Java-Version installieren Java Basics - Anfänger-Themen 9
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
M Ausgabe einer Liste welche mehrere Stacks enthält Java Basics - Anfänger-Themen 3
K GUI Entwicklung - Welche Richtung passt für euch zum mobilen Zeitalter? Java Basics - Anfänger-Themen 4
T Datenbank | Welche am Sinnvollsten? Java Basics - Anfänger-Themen 5
S Welche Verteilung? Java Basics - Anfänger-Themen 1
L Welche Methode? Java Basics - Anfänger-Themen 7
O Methoden welche ich implementier Java Basics - Anfänger-Themen 11
A Wie erkennt die JVM welche class verwendet werden muss? Java Basics - Anfänger-Themen 3
M JDK installieren Welche Software bei XP? Java Basics - Anfänger-Themen 5
H Welche IDE zum Buch "Programmieren mit Java" von Reinhard Schiedermeier des Verlags Pearson Studium Java Basics - Anfänger-Themen 19
U Best Practice Fehleranalyse, welche Fehler macht Ihr beim Lernen bzw. auch später Java Basics - Anfänger-Themen 12
E jProgressbar, 6 Versuche, welche value angeben ? Java Basics - Anfänger-Themen 3
M Welche Entwicklungsumgebung? Java Basics - Anfänger-Themen 32
I Welche Schleife/Bedingung nehme ich her Java Basics - Anfänger-Themen 5
C Methoden Welche JSoup Methoden Und Parameter für diese HTML Tags Java Basics - Anfänger-Themen 4
K Erste Schritte Java lernen - Welche Bücher? Java Basics - Anfänger-Themen 1
P welche Komponente ist im Layout? Java Basics - Anfänger-Themen 2
TheMenox Methoden Bestimmung an welche Methode eine andere Methode ihren Wert weitergeben soll Java Basics - Anfänger-Themen 35
K Methoden mit den Namen accept. Welche Funktion haben diese? Java Basics - Anfänger-Themen 2
G Lambda Ausdruck: Welche Methode ist die Richtige? Java Basics - Anfänger-Themen 1
J Welche Methoden laufen im neuen thread ?? Java Basics - Anfänger-Themen 9
S Welche Datenstruktur ist die optimalste um Funktionen fuer bestimmte Wertebereiche abzurufen..? Java Basics - Anfänger-Themen 5
G Welche Java-Version auf meinem Rechner? Java Basics - Anfänger-Themen 2
Z Methoden Zugriff mit Klasse 3 auf Methode von Klasse 2 welche in Klasse 1 erzeugt wird Java Basics - Anfänger-Themen 6
A Klassen welche Klassen importiert Eclipse automatisch Java Basics - Anfänger-Themen 2
V welche Methode am besten sich für JPG einfügung in Java anzugewöhnen ? Java Basics - Anfänger-Themen 4
M Welche externen Bibliotheken sind in Java sehr zu empfehlen? Java Basics - Anfänger-Themen 4
I Grafische Benutzeroberflächen - welche Komponente nehme ich am besten? Java Basics - Anfänger-Themen 13
G Welche JAVA IDE? Java Basics - Anfänger-Themen 3
S Klassen Zugriff auf Attribute einer zweiten Klasse, welche durch dritte gesettet wurden? Java Basics - Anfänger-Themen 2
E wann welche Konstanten verwenden? Java Basics - Anfänger-Themen 7
K Welche Java Version ist die richtige Java Basics - Anfänger-Themen 3
V Welche Exceptions müssen importiert werden? Java Basics - Anfänger-Themen 3
A Design Pattern - Welche? Java Basics - Anfänger-Themen 33
C Datenbank - Welche Java Basics - Anfänger-Themen 5
S Welche Art von Liste? Java Basics - Anfänger-Themen 3
S Eigene Exception Schreiben und Welche Auslösen wie ? Java Basics - Anfänger-Themen 7
A Wenn genau welche Liste verwenden? Java Basics - Anfänger-Themen 6
T Welche Schleife? Java Basics - Anfänger-Themen 6
P Java Stream, wann welche Stream verwenden? Java Basics - Anfänger-Themen 3
S Collections Welche Collection ist am geeignetsten? Java Basics - Anfänger-Themen 3
S Input/Output Welche Möglichkeiten Eingabe von User abfragen Java Basics - Anfänger-Themen 5
P Swing - Welche Klasse für ausgeben von Ergebnissen? Java Basics - Anfänger-Themen 3
R Welche Datenstruktor für diese Liste? Java Basics - Anfänger-Themen 6
B Erste Schritte Welche Kenntnisse brauche ich für diese Programmidee? Java Basics - Anfänger-Themen 4
P Vererbung herausfinden welche Klasse was erbt Java Basics - Anfänger-Themen 3
K welche art von Liste für TableModell Java Basics - Anfänger-Themen 2
D Welche API für komplexe XML-Struktur? Java Basics - Anfänger-Themen 25
S welche Programmstruktur? Java Basics - Anfänger-Themen 8
M Welche Datenbank? Java Basics - Anfänger-Themen 5
B Welche Themengebiete benötige ich? Java Basics - Anfänger-Themen 7
StupidAttack Gson, welche Datenstruktur? Java Basics - Anfänger-Themen 4
S Welche Collection kann sich selber sortieren? Java Basics - Anfänger-Themen 8
H Welche Art der Ein/Ausgabe Java Basics - Anfänger-Themen 2
D Welche Datenstruktur für welche Problemstellung? Java Basics - Anfänger-Themen 10
U Welche(s) Framework(s) wären geeignet? Java Basics - Anfänger-Themen 8
StrikeTom Welche Dateitypen unterstützt JMF (Java Media Framework)? Java Basics - Anfänger-Themen 6
S Welche Collection? Java Basics - Anfänger-Themen 5
A Welche UML Software benutzt ihr / ist empfehlenswert? Java Basics - Anfänger-Themen 2
N Welche Datenstukturen und Methoden Java Basics - Anfänger-Themen 3
L Auswahl auf welche Art gespeichert werden soll Java Basics - Anfänger-Themen 6
B Welche Java-Installation ist aktiv? Java Basics - Anfänger-Themen 2
B Finden gemeinsamer Kanten: welche Datenstruktur ? Java Basics - Anfänger-Themen 9
S Welche möglichkeiten gibt es eine Zahl zu spiegeln? Java Basics - Anfänger-Themen 17
U Welche Seite für Anfänger Java Basics - Anfänger-Themen 11
K Welche Entwicklungsumgebung für Einsteiger? Java Basics - Anfänger-Themen 16
S Webapplikation welche alternative zu gwt? Java Basics - Anfänger-Themen 2
cowabunga1984 Unit-Testing - Welche Testfälle sind relevant? Java Basics - Anfänger-Themen 4
S Welche Methode in JFrame überschreiben? Java Basics - Anfänger-Themen 12
Z Welche IO-Klasse verwenden? Java Basics - Anfänger-Themen 2
G Welche Datenstruktur ( Sets / Maps)? Java Basics - Anfänger-Themen 10
M Der Java Schlüsselwort null; ?Welche Anweisung und Sinn? Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben