Initial commit: 网页联机狼人杀(FastAPI+WebSocket 后端 / React+TS+Sass 前端)

This commit is contained in:
hhhge committed 2026-10-03 20:47:44 +08:00
commit 7f5ea6bee8
55 files changed
+6999

No files matched your search

+40
View File
@@ -0,0 +1,40 @@
"""板子(角色配置)预设与校验。"""
from __future__ import annotations
from dataclasses import dataclass, field
from .roles import Role
@dataclass(frozen=True)
class Board:
key: str
name: str
roles: list[Role] = field(default_factory=list)
@property
def seat_count(self) -> int:
return len(self.roles)
BOARDS: dict[str, Board] = {
"classic12": Board(
"classic12", "经典12人局(4狼 4民 预女猎守)",
[Role.WEREWOLF] * 4 + [Role.VILLAGER] * 4
+ [Role.SEER, Role.WITCH, Role.HUNTER, Role.GUARD],
),
"standard10": Board(
"standard10", "标准10人局(3狼 3民 预女猎守)",
[Role.WEREWOLF] * 3 + [Role.VILLAGER] * 3
+ [Role.SEER, Role.WITCH, Role.HUNTER, Role.GUARD],
),
"quick9": Board(
"quick9", "快节奏9人局(3狼 3民 预女猎)",
[Role.WEREWOLF] * 3 + [Role.VILLAGER] * 3
+ [Role.SEER, Role.WITCH, Role.HUNTER],
),
}
def get_board(key: str) -> Board:
return BOARDS.get(key, BOARDS["classic12"])