Spielzustand-Automaten
Aus Spieleprogrammierer-Wiki
(Unterschied zwischen Versionen)
[unmarkierte Version] | [unmarkierte Version] |
(→Stapelverarbeitung von Zuständen) |
K (→Stapelverarbeitung von Zuständen) |
||
Zeile 30: | Zeile 30: | ||
=== Stapelverarbeitung von Zuständen === | === Stapelverarbeitung von Zuständen === | ||
− | Neben dem simplen Setzen von Zuständen ist die Abfolge von Zustandswechsel ein interessantes Thema. Dieses Problem lässt sich durch einen Stack sehr gut lösen. Der <tt>StateManager</tt> besitzt einen Stack, der eine Menge an Zuständen referenziert. Dabei gilt das [http://de.wikipedia.org/wiki/Last_In_%E2%80%93_First_Out LIFO-Prinzip] ('''L'''ast '''I'''n '''F'''irst '''O'''ut). Mit Hilfe der Methoden <tt>PushState</tt> lässt sich ein neuer Zustand auf den Stapel packen, der auch gleichzeitig der Aktive ist. Das Gegenstück lautet <tt>PopState</tt> und nimmt | + | Neben dem simplen Setzen von Zuständen ist die Abfolge von Zustandswechsel ein interessantes Thema. Dieses Problem lässt sich durch einen Stack sehr gut lösen. Der <tt>StateManager</tt> besitzt einen Stack, der eine Menge an Zuständen referenziert. Dabei gilt das [http://de.wikipedia.org/wiki/Last_In_%E2%80%93_First_Out LIFO-Prinzip] ('''L'''ast '''I'''n '''F'''irst '''O'''ut). Mit Hilfe der Methoden <tt>PushState</tt> lässt sich ein neuer Zustand auf den Stapel packen, der auch gleichzeitig der Aktive ist. Das Gegenstück lautet <tt>PopState</tt> und nimmt den zuletzt eingefügten Zustand vom Stapel. Durch dieses Prinzip gestalten sich Zustandsübergänge durch eine Kombination aus <tt>PushState</tt> und <tt>PopState</tt>. Hier ein einfaches Beispiel: |
− | Ein Spiel besitzt drei Zustände: ''Hauptmenü'', ''Spiel'' | + | Ein Spiel besitzt drei Zustände: ''Hauptmenü'', ''Spiel'' und ''Demo''. Der <tt>StateManager</tt> hat vorerst einen leeren Stapel. Beim Starten des Programmes wird der Zustand ''Hauptmenü'' mit <tt>PushState</tt> als erster Zustand gesetzt. Nun entscheidet sich der Spieler, ein neues Spiel zu starten. Im Programm wird mit <tt>PushState</tt> der Zustand ''Spiel'' auf den Stapel gepackt. Dadurch ist ''Spiel'' der aktuelle Zustand. Nachdem der Spieler sein Spiel gespielt und verloren hat, möchte er das Spiel erneut mit einem anderen Schwierigkeitsgrad spielen und beendet das Spiel, um in das Hauptmenü zu gelangen. Dazu wird <tt>PopState</tt> aufgerufen, wodurch der Zustand ''Spiel'' vom Stapel genommen wird und ''Hauptmenü'' wieder der aktuelle Zustand ist. |
[[Datei:Stack states.png]] | [[Datei:Stack states.png]] |
Version vom 7. November 2011, 15:53 Uhr
Klicke hier, um diese Version anzusehen.