Was finder ihr besser?
-
Da meine Frage in dem Thread wohl untergegangen ist, hier nochmal:
Angenommen ich habe ein Spiel mit verschiedenen States, die jeweils eine update() und eine draw() Methode haben.
Es gibt nun ne Variable "currentState", die eine Instanz des aktuellen States enthält.
In der Mainloop wird nun zunächst die update() Methode, dann die draw() Methode aufgerufen.Nun wird ja auch zwischen den States gewechselt. Fändet ihr es nun besser, wenn die update() Methode einen Pointer auf die Instanz des nächsten States zurückliefert (bzw this wenn keine Änderung vorgenommen werden soll), oder wenn die Methode einen Wert zurückliefert, der angibt in welchen State gewechselt werden soll und dies dann in einer switch-case Konstruktion geprüft wird.
-
Ich fände nen Pointer wesentlich besser, da du dann dynamisch weitere states hinzufügen kannst, ohne den "verwaltenden" Code (die switch-Anweisung) ändern zu müssen.
Warum kann die update-Methode nicht direkt den currentState ändern?
-
Blubdiedub schrieb:
Da meine Frage in dem Thread wohl untergegangen ist, hier nochmal:
Angenommen ich habe ein Spiel mit verschiedenen States, die jeweils eine update() und eine draw() Methode haben.Wieso jeweils? Die Funktionen ruft man aus einem Zustand aus heraus auf,
ansonsten sind sie redundant.Es gibt nun ne Variable "currentState", die eine Instanz des aktuellen States enthält.
Instanz braucht man nicht, man nimmt einfach Werte die beim Zustandwechsel
zugewiesen werden.
Zustand1 => currentState=1;
Zustand2 => currentState=2;
...In der Mainloop wird nun zunächst die update() Methode, dann die draw() Methode aufgerufen.
Da ja jeder Zustand bei dir die diese Methoden implementiert rufst du sie von welchem Zustand aus ab? Initialzustand?
Nun wird ja auch zwischen den States gewechselt. Fändet ihr es nun besser, wenn die update() Methode einen Pointer auf die Instanz des nächsten States zurückliefert (bzw this wenn keine Änderung vorgenommen werden soll), oder wenn die Methode einen Wert zurückliefert, der angibt in welchen State gewechselt werden soll und dies dann in einer switch-case Konstruktion geprüft wird.
Die Lösung mit switch case.