# registry.py from typing import Dict, Type, Any from base import BasePuzzle class PuzzleRegistry: """谜题注册表""" def __init__(self): self._puzzles: Dict[str, Type[BasePuzzle]] = {} def register(self, name: str, puzzle_class: Type[BasePuzzle]): """注册谜题类""" self._puzzles[name] = puzzle_class return puzzle_class def create(self, name: str, **kwargs) -> BasePuzzle: """创建谜题实例""" if name not in self._puzzles: raise ValueError(f"未知的谜题类型: {name}") return self._puzzles[name](**kwargs) def list_available(self) -> list: """获取可用的谜题类型列表""" return list(self._puzzles.keys()) def get_class(self, name: str) -> Type[BasePuzzle]: """获取谜题类""" return self._puzzles.get(name) # type: ignore # 全局注册表实例 registry = PuzzleRegistry()