Benutzer:Moerdn/ globalDict
globalDict
[Bearbeiten]Die Variable globalDict dient vorrangig dazu, Werte des Spiels zu speichern. Wie der Name verrät, ist diese Variable global verfügbar und von jeder Szene aus zugreifbar. Beim Datentyp handelt es sich um ein Dictionary, in welchem Schlüssel/Wert-Paare gespeichert werden. Der Schlüssel ist dabei ein String, der den Namen des dazugehörigen Wertes angibt. Die Werte dagegen können von beliebigem Typ sein z.B. Integer, String, Float, Listen, Dictionaries oder eigene Klassen-Instanzen.
Variablentyp:
- Blender Version eines Python Dictionaries
Tipp: |
Der Game Actuator bietet die Möglichkeit, das globalDict auf die Festplatte zu speichern und später wieder zu laden. Dies kann für Spielstände und Konfigurationsdateien verwendet werden. |
---|
Verwendung
[Bearbeiten]Das erzeugen von Schlüssel/Werte-Paaren in Python ist sehr einfach möglich:
Beispiel 1.1
[Bearbeiten]# Beispiel 1.1. Schluessel/Werte-Paare in globalDict speichern
GameLogic.globalDict["Name"] = "Spieler1"
GameLogic.globalDict["Rasse"] = "Krieger"
GameLogic.globalDict["Gesundheit"] = 100
GameLogic.globalDict["Geld"] = 234.50
# END 1.1.
Es ist jedoch besser, das Spielerobjekt als eigenes Dictionary zu erzeugen, welches die Werte für den Spieler enthält. Diese Objekte kann man wiederum im globalDict ablegen.
Beispiel 1.2
[Bearbeiten]# Beispiel 1.2. Schluessel/Werte-Paare von komplexem Typ in globalDict speichern
spieler_dict = {"Name" : "Spieler1", "Rasse" : "Krieger", "Gesundheit" : 100, "Geld" : 234.50 }
GameLogic.globalDict["Spieler"] = spieler_dict
# END 1.2.
Es ist weiterhin möglich, Instanzen von eigenen Klassen zu verwenden. Hiermit ist es schließlich möglich, komplex strukturierte Objekte zu erzeugen die sowohl Attribute als auch eigenen Methoden enthalten können.
Beispiel 1.3.1
[Bearbeiten]Diese Beispiel zeigt wie man eigene Klasseninstanzen im globalDict abspeichert.
Tipp: |
ACHTUNG: Eigene Klassen können NICHT mittels Game Actuator und globalDict persistent auf der Platte gespeichert werden. Hierfür empfiehlt sich das Pickle Modul von Python zu verwenden. |
---|
# Beispiel 1.3.1 Klasseninstanzen in globalDict speichern
# Die Spielerklasse anlegen
class Spieler:
# Die Spielerklasse hat 4 Attribute
__slots__ = ["name", "rasse", "gesundheit", "geld"]
# Der Konstruktor zum erzeugen von Objekten
def __init__(self, name, rasse):
self.name = name
self.rasse = rasse
self.gesundheit = 100
self.geld = 50.0
# 2 Spieler-Instanzen erzeugen
spieler1 = Spieler("Spieler1", "Krieger")
spieler2 = Spieler("Speiler2", "Magier")
# Spieler-Instanzen im globalDict speichern
GameLogic.globalDict["Spieler1"] = spieler1
GameLogic.globalDict["Spieler2"] = spieler2
Der Zugriff auf das Dictionary kann auf zwei verschiedene Arten erfolgen.
Beispiel 1.3.2
[Bearbeiten]# Moeglicher zugriff ueber die get() Methode
p1 = GameLogic.globalDict.get("Spieler1")
print(p1.name)
print(p1.rasse)
print(p1.gesundheit)
print(p1.geld)
# Moeglicher Zugriff ueber den Indexoperator []
p2 = GameLogic.globalDict["Spieler2"]
print(p2.name)
print(p2.rasse)
print(p2.gesundheit)
print(p2.geld)
# END 1.3.
zurück zu Benutzer:Moerdn/ GameLogic