erst einmal will ich Schorsch zustimmen: es ist gut, sich auch mal die Herangehensweise anderer anzusehen und ggf. daraus zu lernen =)
unter Beziehung verstehe ich am ehesten das, was auch in UML-(Klassen-)Diagrammen mit Beziehungen gemeint ist
im einfachsten Fall würde zwischen 2 Klassen eine Beziehung bestehen, wenn eine der beiden Klassen eine oder mehr Referenzen auf die anderen speichern kann
in dem Fall wäre es die Map, die alle Spieler (und andere Objekte) speichern würde und wodurch eine Beziehung zwischen Spieler und Map besteht
(genauso würde ich von einer Beziehung sprechen, wenn sich nur die Spieler merken, wo sie sind oder wenn beide Seiten die Gegenseite speichern, wobei letzteres meines Wissens gemieden wird)
die Eigenschaften, die der Beziehung zuzuordnen sind, sollten also an der Stelle gespeichert werden, an der auch der/die Beziehungspartner gespeichert wird/werden
in dem Fall wäre das, da die Spieler von der Map gespeichert werden (dürften) auch bei der Map sein
dies könnte beispielsweise durch eine zusätzliche Klasse geschehen, die die Informationen beinhält und mit dem Beziehungspartner (Spieler) durch ein Assoziatives Array in Zusammenhang gebracht wird
oder durch eine Klasse mit den zusätzlichen Informationen, die ebenfalls den Spieler beinhaltet
(eine zusätzliche Klasse ist nur dann erforderlich, wenn man mehr als eine Information speichern will)
man könnte sich auch die Position und die Spieler in einem assoziativem Array halten
nur dann, wenn der Spieler sich in nur einer Umgebung/einem Kontext befinden kann, welche(r) bestimmt, wie die Werte zu interpretieren sind, können die Werte auch unterhalb des Spielers gespeichert werden
(i. d. R. ist das zwar gegeben, es könnte aber beispielsweise 2D-Spiele geben, bei denen einerseits eine Draufsicht verwendet wird und der spieler sich in alle Himmelsrichtungen bewegen kann, andererseits könnte an anderer Stelle auch eine Seitenansicht verwendet werden, bei der man nach links und rechts laufen und springen kann - Beispiele: ein paar Zelda Teile oder Contra III)
so könnte entweder die Position direkt im Spieler oder innerhalb einer Klasse sein, von der sich ein Objekt im Spieler befindet
letzteres der beiden würde wiederum, bei richtiger Umsetzung, dafür sorgen, dass der Spieler die enthaltenen Informationen "nicht kennt" (sondern nur ein Objekt, welches eine bestimmte Schnittstelle implementiert, welches von der Umgebung kommt)
worin wir uns einig zu sein scheinen: der Spieler sollte nicht selbst wissen, wie er sich zu bewegen hat
damit du verstehst, warum ich davon ausgehe übertrage ich das von mir geschriebene einfach mal auf deine Umsetzung:
ich gehe davon aus, dass deine Klassenstruktur im Groben so aussieht:
es gibt ein Interface für den Controller
es gibt die Klasse Spieler, die dieses Interface kennt
es gibt eine Implementierung des Controllers, die das Interface kennt (ob sie den Sppieler kennt, bin ich mir gerade nicht ganz sicher)
und es gibt eine Klasse für die Umgebung (Map), die den Spieler kennt und ihm den Controller zuweisen kann
wenn man von der Funktionalität absieht (also ersteinmal nur die Daten betrachtet), dann ist die Implementierung des Interface (der Controller) im Prinzip die Klasse für die Speicherung der Daten (Position) des Spielers
diese liegt nicht auf der Seite der Map (assoziatives Array oder Liste von Controllern, die den Spieler kennen), sondern auf der Seite des Spielers (was unter der Voraussetzung, dass es sich nur in einer Umgebung befinden kann, nicht so verkehrt ist
wenn man den Controller auf die Seite der Umgebung verlegt (und ihm für seine Arbeit dann auch den Spieler bekannt macht), hätte man somit die Speicherung der Eigenschaften der Beziehung, wie ich sie gemeint habe
man könnte den Controller als "Teil" der Map sehen, der zur besseren Unterteilung dient (woran ich bisher noch nicht so richtig gedacht hatte...)
und das nicht nur der Daten, sondern auch der Funktionalität, so zum Beispiel wird innerhalb des Controllers ja die Berechnung (mit dem darin liegenden Skript) durchgeführt
sollte ich irgendwas übersehen/vergessen haben, dann weise mich bitte darauf hin
(und ich hoffe, dass die Antwort nicht mal wieder an der Frage vorbei ging... =/ )
was mich selbst interessieren würde:
die Skripte haben Zugriff auf die Eigenschaften der Map (oder allgemein der darüber liegenden Elemente), obwohl dies über die Klassenstruktur für den normalen Code nicht gegeben ist
wie kommt es dazu?
und überhaupt: was ist in dem Zusammenhang mit "Skript" gemeint?
vermutlich ein Stück Quellcode einer anderen Sprache, die an der entsprechenden Stelle zur Ausführung gebracht wird (vielleicht Lua?)