# svguess 你画我猜自动玩家（无头浏览器版）

当你要玩 svguess 你画我猜、且**通过浏览器操作网页**来玩时（Playwright / Puppeteer / Selenium 等无头浏览器，或带
computer-use 的 AI），用这份说明。你就像真人一样打开网页、点按钮、在画布上画、在框里打字。玩的过程中
**不要每个动作后停下来等用户确认**。

网页地址：**https://svguess.pages.dev**

> 说明：这一版是「像人一样操作网页」。画图要靠在画布上拖动鼠标，最费劲。如果你的运行环境也能直接发 HTTP
> 请求，画图/猜词用 REST 会省事得多（见 svguess-http 版）。纯浏览器就照下面来。

## 页面有三屏

靠这些元素判断当前在哪一屏（用 id 选择）：
- 首页 `#screen-home`：昵称输入 `#home-name`、创建 `#btn-create`、房间号输入 `#home-code`、加入 `#btn-join`。
- 大厅 `#screen-lobby`：房间号 `#lobby-code`、人数 `#lobby-count`、开始 `#btn-start`、离开 `#btn-leave-lobby`。
- 游戏 `#screen-game`：见下。

## 1. 进入房间

1. 打开网页，在 `#home-name` 里填**你自己起的名字**（人类不指定；名字由你决定）。
2. 加入已有房间：在 `#home-code` 填房间号 → 点 `#btn-join`。
   新建房间：（可选先在 `#set-rounds` 选回合数、`#set-secs` 选每回合秒数）→ 点 `#btn-create`。
3. 若出现 `#home-err` 报「名字已被占用」，换个名字重填再点。

## 2. 大厅

- 你的房间号在 `#lobby-code`（可点 `#btn-copy` 复制发给别人）。
- 如果你是房主，人数 ≥2 且用户说开始时，点 `#btn-start`。不是房主就等。
- 房主还能在开局前改设置（`#lobby-settings` 里）：`#lb-mode` 选总回合数／每人几轮、`#lb-rounds` 填数字、`#lb-secs` 选每回合秒数，改完自动保存（`#lb-setmsg` 会显示结果）。`#lobby-setline` 那行是现在的设置，所有人都看得到。

## 3. 游戏中——先判断你是画手还是猜的人

进入 `#screen-game` 后：
- **画手**：工具栏 `#g-tools` 会显示出来（不含 hidden），且词区 `#g-word` 直接显示**真正的词**（高亮色）。→ 去「画图」。
- **猜的人**：`#g-tools` 隐藏，`#g-word` 显示的是下划线掩码（如 `_ _`）。→ 去「猜词」。
- 顶部 `#g-round`/`#g-total` 是第几回合/共几回合，`#g-time` 是倒计时。
- 揭晓/结束时 `#g-overlay` 会浮出来（答案、排名、或「再来一局」按钮）。

## 4. 画图（画手）

画布是 `#board`（一个 `viewBox="0 0 800 600"` 的 SVG）。你要**在它上面按住拖动**来画线。

- **只思考一次，而且要短。** 看到词，一两句话内定下画什么形状就立刻动手画第一笔，**不要反复推敲、不要想完再重想**。`#g-time` 的倒计时一直在走，你思考的时间也算在里面，很多模型就是这样想着想着一笔没画就超时了，那一轮直接 0 分。构图不用完美，糙一点也比没画完强。
- 选颜色：点 `#g-swatches` 里的某个色块；选粗细：点 `#g-sizes` 里的某档。
- 画一笔 = 一次「按下→移动若干点→松开」的指针操作。用浏览器自动化时，对 `#board` 派发
  `pointerdown → 多次 pointermove → pointerup`（或 mouse down/move/up）。
- **坐标换算**：画布逻辑坐标是 0–800 × 0–600，但页面上是缩放显示的。先取 `#board` 的
  `getBoundingClientRect()`，把逻辑点 (x, y) 换成屏幕点：
  `clientX = rect.left + x/800*rect.width`，`clientY = rect.top + y/600*rect.height`。
- 工具：`#btn-eraser` 橡皮、`#btn-undo` 撤回、`#btn-clear` 清空。
- **必须画 `#g-word` 显示的那个词**，不许乱画。挑最有辨识度的特征，用几笔大线条画出轮廓，多用颜色区分部分；
  **不要试图写字**（画布也不支持文字）。别追求细节，能让人认出来就行。

（Playwright 示例：读到目标点数组后，`await page.mouse.move(cx0,cy0); await page.mouse.down();
 for p in points: await page.mouse.move(px,py); await page.mouse.up()` 逐笔重复。）

## 5. 猜词（猜的人）

1. 看画布：给 `#board`（或整页）截图，用你的视觉判断画的是什么。类别和字数可以从 `#g-word` 的掩码长度和
   页面提示看。
2. 在 `#g-guess-in` 里输入你的猜测，点 `#g-guess-btn`（或按回车）。
3. 猜过的会显示在 `#g-guesses` 里。**记住你这一轮已经猜错的词，别重复猜**；哪怕只画了一部分、你觉得能认出来就先猜；
   看到空白画布最多盲猜一两个就停。

## 6. 聊天

在 `#g-chat-in` 里输入，点 `#g-chat-btn`（或回车）。`#g-chat` 是聊天记录。
- 频率平衡，别刷屏也别当哑巴；有人叫你/问你就回应，想活跃气氛也可以主动说。
- **答案揭晓前绝不报答案**：哪怕你已经猜对，也不能在聊天里说出或暗示这个词（看 `#g-word` 是否已变成揭晓的答案、
  或 `#g-overlay` 是否浮出来判断是否已揭晓）。

## 7. 一局结束

`#g-overlay` 浮出排名。房主可点「再来一局」继续（同房间新一局）；也可点「回到大厅」或 `#btn-leave-game` 退出。

回放：房主开每一局前（点「开始游戏」或「再来一局」时）会弹出确认框，问「本局结束后自动导出回放视频吗」——按用户意愿选。若开启，游戏结束时会自动把整局作画过程录成 `.webm` 视频下载到房主设备；结算界面也有「导出回放视频」按钮可随时手动导出。这只在你当房主时出现；导出过程中别切走页面。

## 重要规则

- **不要停下来等用户**，除非游戏结束或出现无法恢复的错误。
- **画手只画给定的词，不乱画**；**空画布最多瞎猜一两个**；**别重复猜同一轮已经错过的词**。
- **答案揭晓前不透露答案**（自己猜对了也不行）。
- **离开/被踢/结束后，没有用户指示不擅自重开或重进**。
- **只思考一次，而且要短**：轮到你画或猜，一两句话内拿定主意就动手，别反复推敲——回合有倒计时，想太久这轮就作废了。
- 名字由你自己决定；用中文，语气自然口语化。
- 页面刷新或"失忆"后，重新观察当前在哪一屏、什么角色，继续玩。
