# 狼人杀 **Repository Path**: linphy321/werewolf ## Basic Information - **Project Name**: 狼人杀 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-08 - **Last Updated**: 2026-03-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 狼人杀游戏 基于 Flask + Socket.IO 的狼人杀联机游戏,支持 AI 玩家。 ## 功能概览 - **用户系统**:登录、注册、退出 - **游戏大厅**:房间列表(无房间时提示「暂时没有进行中的游戏,快来创建房间吧」)、创建房间 - **创建房间**:房间序号自动生成,房间名默认为「房间+序号」,可自定义;可选 6 人场 / 8 人场 / 12 人场,各场次有默认身份配置 - **游戏界面**: - 左侧:当前房间玩家列表(实时更新进入/退出) - 中间上:游戏进程显示 - 中间左下:当局身份卡 - 中间中/右下:选择区(如狼人选择击杀对象) - 右侧:讨论区 - 底部:准备、添加 AI 玩家、开始游戏 ## 身份配置(默认) - **6 人场**:1 狼人、2 平民、1 女巫、1 猎人、1 预言家 - **8 人场**:2 狼人、3 平民、1 女巫、1 猎人、1 预言家 - **12 人场**:3 狼人、4 平民、1 女巫、1 猎人、1 预言家、2 守卫 ## 运行方式 ```bash # 安装依赖 pip install -r requirements.txt # 在项目根目录运行 python run.py ``` 浏览器访问:http://127.0.0.1:5001(端口可通过环境变量 `PORT` 修改) ### 云数据库配置 用户与房间列表使用 MySQL 云数据库。默认连接:`sql.wsfdb.cn:3306`,数据库 `gxyhhhlin123`。 可通过环境变量覆盖:`MYSQL_HOST`、`MYSQL_PORT`、`MYSQL_USER`、`MYSQL_PASSWORD`、`MYSQL_DATABASE`。 ## 项目结构 ``` TextProject/ ├── app/ │ ├── __init__.py # Flask 应用、路由、Socket.IO 事件 │ ├── store.py # 用户与房间列表存云数据库,房间运行时状态在内存 │ ├── db.py # MySQL 连接与建表 │ ├── room.py # 房间与游戏状态 │ ├── ai_runner.py # AI 玩家行动执行器 │ ├── ai_memory.py # AI 记忆模块(记录游戏过程) │ ├── llm.py # LLM 调用接口(DeepSeek) │ ├── templates/ # 登录、注册、大厅、游戏页 │ └── static/ # CSS、JS ├── config/ │ ├── game_config.py # 身份与场次配置 │ ├── deepseek_config.py # DeepSeek API 配置 │ ├── prompt_components.py# 提示词组件 │ ├── two_step_prompts.py # 两步调用提示词模板 │ └── database.py # 数据库配置 ├── requirements.txt └── run.py ``` ## AI 玩家 AI 使用 **DeepSeek**(OpenAI 兼容接口)做决策,支持两步调用策略(推理+生成),包括:狼人击杀、预言家查验、女巫解药/毒药、投票、猎人开枪、白天发言。 **配置 API Key(必选,否则 AI 不会行动):** - 设置环境变量:`DEEPSEEK_API_KEY=你的API密钥` - 或复制 `.env.example` 为 `.env` 并填写 `DEEPSEEK_API_KEY` 可选环境变量:`DEEPSEEK_BASE_URL`(默认 https://api.deepseek.com/v1)、`DEEPSEEK_MODEL_PRIMARY`(默认 deepseek-reasoner)。