Tach,
aaaalso mein erster Post in einem Delphi-Forum
Ich bin kein großer Praktiker und schon gar nicht für Delphi (meine Güte bin ich froh, dass ich nach der Schulzeit nie wieder etwas damit zu tun hatte), aber jetzt mal den *Klugscheiß-Modus an* und aus der Theorie geplaudert:
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).
*Klugscheiß-Modus aus*
Naja, praxisnah war das wohl nicht, aber so wird der Quatsch heute noch an der Uni gelehrt
Greetz