You've already forked HeurAMS-Legacy
31 lines
955 B
Python
31 lines
955 B
Python
# 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() |