Einzelnen Beitrag anzeigen

Benutzerbild von Coffeecoder
Coffeecoder

Registriert seit: 27. Apr 2011
242 Beiträge
 
Delphi 6 Enterprise
 
#33

AW: Snake - Ein Problem mit dynamischen Arrays

  Alt 5. Apr 2012, 06:49
Tach,

aaaalso mein erster Post in einem Delphi-Forum
Willkommen in der DP

[...]

Ein dynamisches Array ist schon eine nette Idee für die Schlange, allerdings gibt es schönere Datenstrukturen dafür. Z.B. eine FIFO (first in first out). Klassisch wäre dies wohl TQueue, ein Erbe von Collection.
Was den Speicherplatz angeht: bei solchem "Kleinkram" achtet heute niemand mehr auf Speicher, trotzdem ist es schlechter Stil, Speicher zu verschwenden. Willst du also deine Schlange zwingend in einer eigenen Datenstruktur speichern, wäre es ratsam eine eigene Klasse Schlange anzulegen. Die Klasse bekommt intern einen Fifo, mit dem die aktuell belegten Felder gespeichert werden, und enthält Methoden um den Richtungswechsel zu verarbeiten, Position zurück zu geben ect. Hmm... Jetzt bin ich abgeschweift. Zurück zum FIFO: der Fifo muss nur X Elemente speichern, wobei X die Länge der Schlange ist. Du musst dir keine 4 Elemente Pro Schlangen-Abschnitt merken! Theoretisch reicht ein Punkt (x,y) oder noch schöner nur ein Wert Z. Dazu nummerierst du gedanklich deine Positionen durch. Hast du ein Feld, dass a breit ist und b hoch, so sagt dir z.b. x mod a die Zeile in der ein Element ist und x div b die Reihe. Somit musst du maximal pro Sclangen-Teil noch einen Integer speichern (schöner noch nen byte).
Ein sehr interessanter Ansatz Find ich gut

Ich habe mal eben Just4Fun ein Snake-Spiel mit TMemo programmiert. Ist nicht viel drin, nur ein Level. Gesteuert wird mit den Cursortasten.
Nett Erinnert mich an meinen Java Konsolensnake
Coffeecoder

Geändert von Coffeecoder ( 5. Apr 2012 um 06:52 Uhr) Grund: Add weil ich es kann ;)
  Mit Zitat antworten Zitat