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étodoRetornaDescripción
save(key, value)NoneGuarda un valor con la clave dada
load(key)valor o NoneCarga un valor, o None si la clave no existe
has(key)boolComprueba si una clave existe
delete(key)NoneElimina una clave
clear()NoneElimina 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:

TipoEjemplo
intstorage.save("score", 100)
floatstorage.save("speed", 2.5)
strstorage.save("name", "Alice")
boolstorage.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)