pyxen.storage

Daten über Spielsitzungen hinweg speichern. Speichere Highscores, Einstellungen, Fortschritt oder jeden Wert, der erhalten bleiben soll, wenn das Spiel geschlossen und wieder geöffnet wird.

storage.save("high_score", 9500)
storage.save("player_name", "Alice")
storage.save("sound_on", True)

score = storage.load("high_score")   # 9500
name = storage.load("player_name")   # "Alice"
missing = storage.load("no_key")     # None

Werte werden als int, float, string oder bool gespeichert. Andere Typen (Listen, Dicts, Objekte) werden nicht unterstützt.


So funktioniert es

Auf iPad & Mac wird der Speicher als storage.json in der .pyxen-Projektdatei abgelegt. Die Daten reisen mit dem Projekt — wenn du die Datei teilst, gehen die gespeicherten Daten mit.

Im Web-Player verwendet der Speicher den localStorage des Browsers, gruppiert nach Spiel.

Der Speicher wird geschrieben, wenn das Spiel stoppt. Du musst nicht manuell leeren.


Methoden

MethodeRückgabeBeschreibung
save(key, value)NoneEinen Wert unter dem angegebenen Schlüssel speichern
load(key)Wert oder NoneEinen Wert laden, oder None wenn der Schlüssel nicht existiert
has(key)boolPrüfen, ob ein Schlüssel existiert
delete(key)NoneEinen Schlüssel entfernen
clear()NoneAlle Schlüssel entfernen

save(key, value)

storage.save("score", 100)
storage.save("name", "Alice")
storage.save("ratio", 3.14)
storage.save("completed", True)

Speichert einen Wert unter dem angegebenen String-Schlüssel. Wenn der Schlüssel bereits existiert, wird sein Wert überschrieben.

Unterstützte Typen:

TypBeispiel
intstorage.save("score", 100)
floatstorage.save("speed", 2.5)
strstorage.save("name", "Alice")
boolstorage.save("muted", False)

Die Übergabe eines anderen Typs (Liste, Dict usw.) löst einen TypeError aus.


load(key)

score = storage.load("high_score")

Gibt den dem Schlüssel zugeordneten Wert zurück, oder None wenn der Schlüssel nicht existiert.

Der zurückgegebene Wert hat denselben Typ, mit dem er gespeichert wurde — ein int kommt als int zurück, ein String als String.

score = storage.load("high_score")
if score is None:
    score = 0  # erstes Mal spielen

has(key)

if storage.has("high_score"):
    log("Willkommen zurück!")

Gibt True zurück, wenn der Schlüssel existiert, sonst False.


delete(key)

storage.delete("old_setting")

Entfernt einen Schlüssel aus dem Speicher. Tut nichts, wenn der Schlüssel nicht existiert.


clear()

storage.clear()

Entfernt alle Schlüssel aus dem Speicher. Mit Vorsicht verwenden.


Beispiele

Highscore

from pyxen import *

best = storage.load("best") or 0
score = 0

def update():
    global score, best
    score += 1
    if score > best:
        best = score
        storage.save("best", best)

Einstellungen

from pyxen import *

sound_on = storage.load("sound") is not False

def update():
    global sound_on
    if input.keyboard.m.pressed:
        sound_on = not sound_on
        storage.save("sound", sound_on)

Level-Fortschritt

from pyxen import *

level = storage.load("level") or 1

def next_level():
    global level
    level += 1
    storage.save("level", level)