Zugriff auf Daten aus verschiedenen Types heraus
Übersicht

SchrolliBetreff: Zugriff auf Daten aus verschiedenen Types heraus |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nabend zusammen,
stehe vor einem kleinen Logikproblem. Follgender Schematischer Aufbau: BlitzMax: [AUSKLAPPEN] SuperStrict Ich erzeuge aus dem Programm eine Instanz der TTileEngine. Über diese erzeuge ich mit newLayer() einen Instanz der TTileLayer. Alle Instanzen der TTileLayer liegen in einer TList in der TTileEngine. Jedes Layer kann nun die Grafiken laden, als Instanzen der TTile, welche alle in der jeweiligen TTileLayer in einer TList liegen Nun kann ich über die TTileEngine.layer("LayerNAME").draw() das Layer auf den Bildschirm zeichnen. In der TTilesEngine befindet sich die Methode moveCamera() um den Bildausschnitt zu verschieben. Die Methode draw() benötigt aber die Werte der Position der Camera um nur den aktiven Bildausschnitt zu zeichnen. Wird etwa so benutzt: BlitzMax: [AUSKLAPPEN]
Wie komme ich denn nun in der TTileLayer Instanz an die Daten der TTilesEngine? Hoffe das ganze ist verständlich. Gruß Basti Edit: Hab gerade einen kleinen Workaroud gefunden, ob das allerdings "schön" ist? Wie macht man sowas richtig? Habe jetzt in der TTilesEngine die X und Y Position der Camera als global deklariert und greife aus der TTileLayer über statische Functionen ala getCamX() auf diese zu, um die zu lesen... |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde entweder ein globales Kamera Objekt verwenden oder die Kamera als Singelton anlegen: Man kann nur ein Objekt erzeugen und erhält dann immer die gleiche Instanz zurück.
Ansonsten schau dir das Component Pattern an. Schöner sortierter Code ist wünschenswert, aber wäge ab, ob du lieber mit dem Spiel fertig werden willst. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Schrolli |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Schau ich mir an, danke...
Wie genau deklariert man denn einen Singleton? Was meinst du mit schöner sortiert? Also inwiefern? Wie sollte sowas denn aussehen das man von gutem Stil sprechen kann? Bin was sowas angeht sehr gerne lern-gewillt ![]() Grüße |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe gerade kein lauffähiges BM hier, aber ein Singelton könnte etwa so aussehen:
BlitzMax: [AUSKLAPPEN] Type TSingle Man kann die Funktion auch get nennen oder wie immer es dir in dein Namensschema passt. Schöner Code ist einheitlich, aussagekräftig und gut gekapselt. Ein empfehlenswertes Werk zum Thema ist "Clean Code" von Robert C. Martin. Ist etwas Java lastig, aber die Prinzipien sind überall die gleichen. Wenn man guten Code hat, hat man weniger WTFs pro Minute. Wie gesagt: Wenn man etwas fertig bekommen will, bricht man manchmal den Stil und macht was hässliches (direkt auf variablen anderer Objekte zugreifen, mehr als eine Sache in einer Funktion erledigen weil es so schneller geht). |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
ThunderBetreff: Re: Zugriff auf Daten aus verschiedenen Types heraus |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Schrolli, Xeres hat dir zwar schon sehr viel geholfen, aber ich möchte eine simple antwort geben.
Das was du suchst, ist eine globale Variable. Schrolli hat Folgendes geschrieben: Edit:
Hab gerade einen kleinen Workaroud gefunden, ob das allerdings "schön" ist? Wie macht man sowas richtig? Habe jetzt in der TTilesEngine die X und Y Position der Camera als global deklariert und greife aus der TTileLayer über statische Functionen ala getCamX() auf diese zu, um die zu lesen... Wenn du für dein ganzes Programm eine Instanz von TTilesEngine hast, dann wäre es vermutlich sinnvoller, X und Y der Kamera als Fields zu deklarieren und diese Instanz von TTilesEngine in eine globale Variable zu speichern. Dann kannst du über die globale Instanz (wenn nötig über getCam*()-Methoden) auf die Koordinaten zugreifen. So wie du es jetzt hast, fände ich es nur sinnvoll wenn es potenziell mehrere TTilesEngine Instanzen (deswegen machst du überhaupt Instanzen von der Klasse) und immer nur eine Kamera (deswegen sind ihre Koordinaten Global) gibt. Ich hoffe du verstehst, worauf ich hinaus will. |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group