Spielzustand-Automaten

Aus Spieleprogrammierer-Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
[gesichtete Version][unmarkierte Version]
K (StateManager)
(Grundidee und Architektur)
Zeile 10: Zeile 10:
 
[[Datei:uml_states.png|miniatur|UML-Klassendiagramm eines Spielzustand-Automaten]]
 
[[Datei:uml_states.png|miniatur|UML-Klassendiagramm eines Spielzustand-Automaten]]
  
Die Grundidee der Spielzustand-Automaten lässt sich in zwei Klassen teilen: Den Zustands-Manager <tt>StateManager</tt> und eine Schnittstelle <tt>State</tt>. Jedes Spiel definiert eine Menge an Zuständen in Form von Klassen, die die Schnittstelle <tt>State</tt> implementieren. Der <tt>StateManager</tt> kennt und besitzt alle Zustände und identifiziert diese über eine ID. Der aktuelle Zustand lässt sich mit dem <tt>StateManager</tt> setzen.
+
Die Grundidee der Spielzustand-Automaten lässt sich in zwei Klassen teilen: Den Zustands-Manager <tt>StateManager</tt> und eine Schnittstelle <tt>State</tt>. Jedes Spiel definiert eine Menge an Zuständen in Form von Klassen, die die Schnittstelle <tt>State</tt> implementieren. Der <tt>StateManager</tt> kennt und besitzt alle Zustände und identifiziert diese über eine ID. Dem <tt>StateManager</tt> müssen alle Zustände registriert werden, um sie verwenden zu können.
  
 
=== Stapelverarbeitung von Zuständen ===
 
=== Stapelverarbeitung von Zuständen ===
Zeile 19: Zeile 19:
  
 
[[Datei:Stack states.png]]
 
[[Datei:Stack states.png]]
 +
 +
=== Informationsaustausch zwischen Spielzuständen ===
 +
 +
Ein Zustandswechsel findet statt, wenn ein neuer Zustand auf dem Stapel abgelegt oder entfernt wird. Oftmals ist es dann notwendig, dass Informationen von dem alten zum neuen Zustand übergeben werden. Einfaches Beispiel: <br /><br />
 +
 +
Ein [http://de.wikipedia.org/wiki/Tower_Defense Tower-Defense]-Spiel befindet sich gerade im Zustand ''Level und Schwierigkeitsgrad wählen''. Nachdem die Einstellungen durch den Benutzer getroffen worden sind und das Spiel starten soll, so wird auf dem Spielzustands-Stapel der Spielzustand ''HauptSpiel'' gelegt. Dieser Zustand muss wissen, welches Level und welcher Schwierigkeitsgrad gewählt worden ist, um die entsprechenden Daten zu laden und Objekte zu erzeugen. <br /><br />
 +
 +
In diesem Fall muss bei dem Zustandstandswechsel eine Informationsübergabe vom Spielzustand ''Level und Schwierigkeitsgrad wählen'' zu ''HauptSpiel'' durchgeführt werden. Es gibt verschiedene Wege, dieses Problem zu lösen:
 +
 +
# Globale Daten bereitstellen, auf den alle States zugreifen können
 +
# Übergeben der konkreten Daten vom Quellzustand zum Zielzustand über den StateManager
  
 
==== Transparente Zustände ====
 
==== Transparente Zustände ====

Version vom 14. Dezember 2011, 09:36 Uhr

Klicke hier, um diese Version anzusehen.

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Werkzeuge