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.
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.


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