pyxen.storage
Persiste datos entre sesiones de juego. Guarda puntuaciones altas, ajustes, progreso, o cualquier valor que deba sobrevivir cuando el juego se cierra y se vuelve a abrir.
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
Los valores se almacenan como int, float, string o bool. Otros tipos (listas, diccionarios, objetos) no son compatibles.
Cómo funciona
En iPad y Mac, el almacenamiento se guarda como storage.json dentro del archivo de proyecto .pyxen. Los datos viajan con el proyecto — si compartes el archivo, los datos guardados van con él.
En el reproductor web, el almacenamiento usa el localStorage del navegador, indexado por juego.
El almacenamiento se escribe cuando el juego se detiene. No necesitas vaciar manualmente.
Métodos
| Método | Retorna | Descripción |
|---|---|---|
save(key, value) | None | Guarda un valor con la clave dada |
load(key) | valor o None | Carga un valor, o None si la clave no existe |
has(key) | bool | Comprueba si una clave existe |
delete(key) | None | Elimina una clave |
clear() | None | Elimina todas las claves |
save(key, value)
storage.save("score", 100)
storage.save("name", "Alice")
storage.save("ratio", 3.14)
storage.save("completed", True)
Guarda un valor con la clave de texto dada. Si la clave ya existe, su valor se sobrescribe.
Tipos soportados:
| Tipo | Ejemplo |
|---|---|
int | storage.save("score", 100) |
float | storage.save("speed", 2.5) |
str | storage.save("name", "Alice") |
bool | storage.save("muted", False) |
Pasar cualquier otro tipo (lista, diccionario, etc.) genera un TypeError.
load(key)
score = storage.load("high_score")
Retorna el valor asociado con la clave, o None si la clave no existe.
El valor retornado tiene el mismo tipo con el que fue guardado — un int regresa como int, un string como string.
score = storage.load("high_score")
if score is None:
score = 0 # primera vez jugando
has(key)
if storage.has("high_score"):
log("Welcome back!")
Retorna True si la clave existe, False en caso contrario.
delete(key)
storage.delete("old_setting")
Elimina una clave del almacenamiento. No hace nada si la clave no existe.
clear()
storage.clear()
Elimina todas las claves del almacenamiento. Usar con precaución.
Ejemplos
Puntuación alta
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)
Ajustes
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)
Progreso de nivel
from pyxen import *
level = storage.load("level") or 1
def next_level():
global level
level += 1
storage.save("level", level)