pyxen.storage

플레이 세션 간에 데이터를 유지합니다. 최고 점수, 설정, 진행 상황 또는 게임을 닫았다가 다시 열어도 유지되어야 하는 모든 값을 저장하세요.

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

값은 int, float, string 또는 bool로 저장됩니다. 다른 타입(리스트, 딕셔너리, 객체)은 지원되지 않습니다.


작동 방식

iPad & Mac에서는 저장소가 .pyxen 프로젝트 파일 내부에 storage.json으로 저장됩니다. 데이터는 프로젝트와 함께 이동합니다 — 파일을 공유하면 저장된 데이터도 함께 전달됩니다.

웹 플레이어에서는 저장소가 브라우저의 localStorage를 사용하며, 게임별로 키가 구분됩니다.

저장소는 게임이 중지될 때 기록됩니다. 수동으로 플러시할 필요가 없습니다.


메서드

메서드반환값설명
save(key, value)None주어진 키로 값을 저장
load(key)값 또는 None값을 불러오거나, 키가 없으면 None 반환
has(key)bool키가 존재하는지 확인
delete(key)None키를 삭제
clear()None모든 키를 삭제

save(key, value)

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

주어진 문자열 키로 값을 저장합니다. 키가 이미 존재하면 값이 덮어씌워집니다.

지원되는 타입:

타입예시
intstorage.save("score", 100)
floatstorage.save("speed", 2.5)
strstorage.save("name", "Alice")
boolstorage.save("muted", False)

다른 타입(리스트, 딕셔너리 등)을 전달하면 TypeError가 발생합니다.


load(key)

score = storage.load("high_score")

키와 연결된 값을 반환하거나, 키가 존재하지 않으면 None을 반환합니다.

반환된 값은 저장할 때와 동일한 타입을 가집니다 — int는 int로, 문자열은 문자열로 반환됩니다.

score = storage.load("high_score")
if score is None:
    score = 0  # 처음 플레이

has(key)

if storage.has("high_score"):
    log("Welcome back!")

키가 존재하면 True, 그렇지 않으면 False를 반환합니다.


delete(key)

storage.delete("old_setting")

저장소에서 키를 제거합니다. 키가 존재하지 않으면 아무 일도 일어나지 않습니다.


clear()

storage.clear()

저장소의 모든 키를 제거합니다. 주의해서 사용하세요.


예제

최고 점수

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)

설정

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)

레벨 진행

from pyxen import *

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

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