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)
주어진 문자열 키로 값을 저장합니다. 키가 이미 존재하면 값이 덮어씌워집니다.
지원되는 타입:
| 타입 | 예시 |
|---|---|
int | storage.save("score", 100) |
float | storage.save("speed", 2.5) |
str | storage.save("name", "Alice") |
bool | storage.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)