Ah ok. Gut, dann würde ich mir als erstes die Frage stellen, ob die zweidimensionale Anordnung der Felder für die Logik in irgendeiner Form wichtig ist, oder ob sich alles nur über die Nachbarschaftsbeziehungen abspielt.
es ist wichtig zu wissen, welches Feld rechts/links/über/unter einem Feld ist und an welcher Position sich ein Feld befindet
die Speicherung in einem 2-dimensionalem Array ist ein möglicher Ansatz dafür
mit dem Vorschlag von Chromanoid ließen sich die Felder mit einem einfachen Array (oder einer anderen, vergleichbaren Struktur) speichern
(es muss nicht zwingend ein 2D-Array sein, sofern sich die genannten Voraussetzungen erfüllen lassen)
je nach verwendeter Struktur gibt es auch (unabhängig von der Logik, die dies verhinden muss) verschiedene mögliche, aber eigentlich falsche Zustände
bei einer einfachen Auflistung aller Felder, welche dann selbst ihre Position speichern kann es beispielsweise dazu kommen, dass 2 Felder die gleiche Koordinate belegen
allerdings bin ich mir nicht sicher, wie sinnvoll es ist, darauf Rücksicht zu nehmen
@Burningwave:
ich denke, ich hatte erst nicht richtig verstanden, dass nur der Index des anderen Felds und nicht das andere Feld selbst gespeichert wird
ich denke, dass ich statt der einen (mehr oder weniger unpräzisen) Frage am Anfang folgende Fragen stellen kann:
wo sollten die Koordinaten der Felder gespeichert werden? (und damit einhergehend, ob ein 2D-Array verwendet wird oder nicht)
sollte eine Liste an Feldern für jedes Feld gespeichert werden oder für jede mögliche Verbindung ein Wahrheitswert?
sollte dies innerhalb der Felder oder außerhalb gespeichert werden?
wie schon geschrieben: ich bin mir nicht sicher, ob ich zu Gunsten der Konsistenz oder zu Gunsten der einfacheren Implementierung entscheiden sollte (Performance dürfte in dem Zusammenhang keine größere Bedeutung haben, denke ich...)
da darauf aufbauender Code (wie die Ermittlung, mit welchen Feldern Feld X benachbart ist oder ob dies von den Feldern oder dem übergeordnetem Objekt durchgeführt wird) noch nicht implementiert ist, muss bei der Entscheidungsfindung darauf keine Rücksicht genommen werden
derzeit tendiere ich eher dazu, die Datenstruktur bereits so anzulegen, dass Inkonsistenzen und Redundanzen bestmöglich vermieden werden
dies würde beispielsweise gehen, indem die Felder in einem 2D-Array gespeichert werden (die Koordinate ist gleichzeitig der Index des Felds) und die Verbindungen außerhalb durch 2 2D-Arrays (für jede Stelle, an der eine Verbindung sein könnte, wird also "true" oder "false" gespeichert - 2 Arrays, da so einfacher von den Feldkoordinaten auf die Verbindungskoordinaten umgerechnet werden kann)
was würde dagegen sprechen (und für einen der anderen Vorschläge?)