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
| Methode | Rückgabe | Beschreibung |
|---|---|---|
save(key, value) | None | Einen Wert unter dem angegebenen Schlüssel speichern |
load(key) | Wert oder None | Einen Wert laden, oder None wenn der Schlüssel nicht existiert |
has(key) | bool | Prüfen, ob ein Schlüssel existiert |
delete(key) | None | Einen Schlüssel entfernen |
clear() | None | Alle 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:
| Typ | Beispiel |
|---|---|
int | storage.save("score", 100) |
float | storage.save("speed", 2.5) |
str | storage.save("name", "Alice") |
bool | storage.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)