Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| import sys | |
| from datetime import datetime | |
| from pathlib import Path | |
| PROJECT_ROOT = Path(__file__).resolve().parents[1] | |
| if str(PROJECT_ROOT) not in sys.path: | |
| sys.path.insert(0, str(PROJECT_ROOT)) | |
| from config import load_settings | |
| from game.state import CulpritState, GameState | |
| from grid_map.storage import write_json | |
| def create_new_game(initial_description: str, starting_junction: int = 100) -> Path: | |
| settings = load_settings() | |
| game_id = datetime.now().strftime("game_%Y%m%d_%H%M%S") | |
| game_dir = settings.games_dir / game_id | |
| state = GameState( | |
| game_id=game_id, | |
| turn_number=1, | |
| max_turns=settings.max_turns, | |
| phase="commissioner_action", | |
| initial_description=initial_description, | |
| culprit=CulpritState( | |
| current_junction=starting_junction, | |
| current_disguise=initial_description, | |
| remaining_disguise_changes=settings.starting_disguise_changes, | |
| ), | |
| ) | |
| write_json(game_dir / "game_state.json", state.to_dict()) | |
| write_json(game_dir / "culprit_private_state.json", state.culprit.__dict__) | |
| for subdir in ("notices", "witnesses", "turns", "logs"): | |
| (game_dir / subdir).mkdir(parents=True, exist_ok=True) | |
| return game_dir | |
| if __name__ == "__main__": | |
| path = create_new_game("A nervous-looking person in a grey raincoat carrying a red folder.") | |
| print(f"Created {path}") | |