运行一场游戏
标准流程
发布登录码 → 玩家入场 → [可选] 关闭登录码 → 发题 → 自动结算 × N → winner/tie → 重置
1. 开放入场
- Admin:发布登录码
- Show:确认大屏显示码与人数
- 目标人数到达后 关闭登录码(推荐)
2. 发布题目
- 从 QuestionList 点选未发送的预设题
POST /api/admin/next-question- 首次发题设置
gameStarted=1
3. 轮次自动结算
倒计时结束 → Backend endRound():
- 淘汰未答 / 多数派
eliminated+round_result- 剩 ≤2 人 →
endGame→winner/tie(含 displayName)
Admin 无需手动结束轮次。
4. 结束处理
| 结果 | 事件 | 大屏 |
|---|---|---|
| 1 人 | winner + winnerDisplay | WinnerModal |
| 2 人 | tie + finalistsDisplay | TieModal |
5. 重置
POST /api/admin/reset-game 会:
- 清空游戏 Redis 状态
clearLoginCode()clearPlayerRegistry()(显示名、序号)- 停用 PG 自动恢复 30s
- 广播
game_start
重置后需 重新发布登录码 才能入场。
curl 示例
TOKEN="<admin accessToken>"
# 发布登录码
curl -X POST $API/api/admin/publish-login-code \
-H "Authorization: Bearer $TOKEN"
# 发题
curl -X POST $API/api/admin/next-question \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"question":"测试","optionA":"A","optionB":"B"}'
# 重置
curl -X POST $API/api/admin/reset-game \
-H "Authorization: Bearer $TOKEN"