Initial commit: 网页联机狼人杀(FastAPI+WebSocket 后端 / React+TS+Sass 前端)
This commit is contained in:
commit
7f5ea6bee8
55 files changed
+6999
No files matched your search
@@ -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"])
|
||||
Reference in new issue
Block a user