跳到主要内容
版本:Current

运行一场游戏

标准流程

发布登录码 → 玩家入场 → [可选] 关闭登录码 → 发题 → 自动结算 × N → winner/tie → 重置

1. 开放入场

  • Admin:发布登录码
  • Show:确认大屏显示码与人数
  • 目标人数到达后 关闭登录码(推荐)

2. 发布题目

  • 从 QuestionList 点选未发送的预设题
  • POST /api/admin/next-question
  • 首次发题设置 gameStarted=1

3. 轮次自动结算

倒计时结束 → Backend endRound()

  • 淘汰未答 / 多数派
  • eliminated + round_result
  • 剩 ≤2 人 → endGamewinner / tie(含 displayName)

Admin 无需手动结束轮次

4. 结束处理

结果事件大屏
1 人winner + winnerDisplayWinnerModal
2 人tie + finalistsDisplayTieModal

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"