state.py
1569 bytes | ef40951
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | """ Player and Game State for Dungeon Descent """ import json from pathlib import Path class Player: def __init__(self, name="Adventurer"): self.name = name self.hp = 20 self.max_hp = 20 self.inventory = [] self.floor = 1 self.pos = (0, 0) # (x, y) def to_dict(self): return { "name": self.name, "hp": self.hp, "max_hp": self.max_hp, "inventory": self.inventory, "floor": self.floor, "pos": self.pos } @classmethod def from_dict(cls, data): player = cls(data["name"]) player.hp = data["hp"] player.max_hp = data["max_hp"] player.inventory = data["inventory"] player.floor = data["floor"] player.pos = tuple(data["pos"]) return player class GameState: SAVE_FILE = Path("game_save.json") def __init__(self): self.player = Player() self.current_map = [] # List of strings or chars def save(self): data = { "player": self.player.to_dict(), "map": self.current_map } self.SAVE_FILE.write_text(json.dumps(data, indent=2)) def load(self): if self.SAVE_FILE.exists(): data = json.loads(self.SAVE_FILE.read_text()) self.player = Player.from_dict(data["player"]) self.current_map = data["map"] return True return False def delete_save(self): if self.SAVE_FILE.exists(): self.SAVE_FILE.unlink() |
GIMHub