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

+38
View File
@@ -0,0 +1,38 @@
"""玩家实体:人类(持 WebSocket 连接)或 AI。"""
from __future__ import annotations
import secrets
from fastapi import WebSocket
from .roles import Role
class Player:
def __init__(self, seat: int, name: str, is_ai: bool = False) -> None:
self.seat = seat
self.name = name
self.is_ai = is_ai
self.token = secrets.token_hex(8)
self.role: Role | None = None
self.alive = True
self.ws: WebSocket | None = None # AI 恒为 None
self.speaking = False # 当前正在发言(仅用于 UI 高亮)
self.persona: str = "" # AI 性格(LLM 提示词用)
# ------------------------------------------------------------------
@property
def connected(self) -> bool:
return self.is_ai or self.ws is not None
def bind_ws(self, ws: WebSocket) -> None:
self.ws = ws
def unbind_ws(self, ws: WebSocket) -> None:
if self.ws is ws:
self.ws = None
def reset_for_new_game(self, role: Role) -> None:
self.role = role
self.alive = True
self.speaking = False