diff --git a/reports/iter30-代拍板追认单-2026-10-17.md b/reports/iter30-代拍板追认单-2026-10-17.md new file mode 100644 index 00000000..2ecead27 --- /dev/null +++ b/reports/iter30-代拍板追认单-2026-10-17.md @@ -0,0 +1,17 @@ +# 迭代 30 卡① 未开格类型徽章批 · 代拍板追认单 + +- 批次:迭代 30 卡①(分支 `iter30-glow-20261017`,worktree `g-plan2-iter30-glow`) +- 依据:卡片 §9 代拍板白名单(超清单必呈报);Q1–Q5 本体不在白名单(v1.2 已裁,见 §10 裁定行,本批未开放重裁) +- 完成日 2026-10-17。以下 7 项为批内代拍板决定,逐项留痕待追认或推翻 + +| # | 白名单项 | 批内决定 | 理由/备注 | +|---|---|---|---| +| 1 | 新常量与函数命名、文件落点 | 色板与归组落 `ui_kit.gd` 单点:组号常量 `GLOW_NONE/BUFF/HEAL/PIERCE/MAGIC/AOE`、五组色值 `TG_GLOW_BUFF/HEAL/PIERCE/MAGIC/AOE`、呈现参数 `TYPE_GLOW_ALPHA/BAND_FRAC/SOFT/CORNER`;函数 `glow_group_for_cell_type()`(九值封闭)+`glow_color_for_group()`(组号→色值,透明出口)。绘制面新建单点件 `cell_type_glow.gdshader`(canvas_item 距离场)+`cell_type_glow_layer.gd`(承载/注参),不塞进 `board_cell_unit.gd` | 守卫「新增色值一律入 ui_kit 单点、呈现层裸 Color8 = 0」可机检(静态段既有);shader 与承载件分离 = uniform 参数表可直读可断言。与既有 TG_* 卡顶带**两套并存、禁互为引用**(Q3 甲案) | +| 2 | 泛光实现细节取舍 | 走 Q1 丙案主路径 shader 距离场衰减(非 draw_rect 分段叠层/非 draw_polygon 渐变近似);a 案程序绘制兜底件**未实例化启用**(共存实测未撞墙,L3 预授权①未触发;兜底路径留档于卡片 T1,不落码) | shader 内缘带 SDF+圆角掩码+`mask_rect` 豁免区(预读徽章位)一步到位;带宽/α/软边/圆角全参数化,调参不改代码 | +| 3 | shader uniform 命名与参数表 | `glow_col / glow_alpha / band_frac / soft / corner / cell_px / mask_rect`(`cell_type_glow.gdshader:12-18`);参数值全部由 ui_kit 常量注入(`cell_type_glow_layer.gd` set_shader_parameter),shader 内默认值仅占位 | 命名与 art-bible §4.2 v2 呈现参数一一对应(α170/cell÷8);hint_range 限幅防误调出界 | +| 4 | 呼吸相位驱动写法 | **未启用呼吸**(Q5 甲案静态);shader 相位通道未预留 uniform,`_process` 呼吸仅接触带既有件在跑(3 rad/s≈0.48Hz,减动效 `motion_scale<1.0` 停格)。微光相位门控复用 `set_dig_glow_enabled`(与接触带同源) | Q5 甲案下 V8 空转;若出口后追裁呼吸再议,本批不预设通道 | +| 5 | 冒烟/探针断言取值与夹具板配置 | 冒烟夹具:seed 4242 L1 板+`install_board`+novice 驱动到未开邻格 ≥5(初始展开覆盖 8 邻→必驱动);八邻派八型(attack/heal/pierce/blast/magic/defense/action/gp)+哈希兜底九型全集;清单外负样本 `"keystone"`;封锁集返回 null;契约 1 双实例 = 同板同 12 步 novice 序列逐步对照 digest(hero/已开集/旗数/AP/相位)。探针 case⑰ 活板面 = 生产身份面(真实点击挖开)。board_shot 双帧 = 每关 18 步 novice+`motion_scale=0.5` 停格+生产身份接线 | 夹具确定性(全缸可复现);「同板同序列」隔离唯一定位在开关;双帧前置停格否则接触带相位漂移污染「非生效格零变化」 | +| 6 | 取样阈值 provisional 数值 | 带内判据 `band_px = cell×0.125`(L1 格边 46 → 5.75px);互辨判据线 CR ≥ 1.20(相邻组,合成空间模型域);golden 容差沿用 ≤16 差/≤2% 占比(render_gate 现值,未新立);砖心灰度扰动阈值以「带外零变化」等效承载(禁侵判据 = 变化像素全部落在内缘带内) | 首版取严:判据线 1.20 高于实测最弱对 1.232 的 97%;模型域与实测差(shader 距离场权重非扁平混合)由探针实测兜底,故阈值不收紧到模型值 | +| 7 | 提交切分与 worktree 分支命名 | 分支 `iter30-glow-20261017`/worktree `g-plan2-iter30-glow`;提交按「实施本体(色板/shader/承载件/board_view 生命周期)→ 断言三件(冒烟段/单测/探针段)→ 渲染取证(board_shot 双帧)→ reports/ 三份产出物」切分;自产 `.uid` 3 个随件提交 | 与 iter29 单批十提交的颗粒度对齐;合回前 `git merge master`(master 已到 bd6ab32e,本分支基于 d984d47c)再重闸 | + +**追认请求**:以上 7 项如无异议即视为追认;有异议项指出#号,按 L1(自救)或重裁处理。 diff --git a/reports/iter30-反哺点-2026-10-17.md b/reports/iter30-反哺点-2026-10-17.md new file mode 100644 index 00000000..18335aec --- /dev/null +++ b/reports/iter30-反哺点-2026-10-17.md @@ -0,0 +1,19 @@ +# 迭代 30 卡① 未开格类型徽章批 · 反哺点清单 + +- 批次:迭代 30 卡①(分支 `iter30-glow-20261017`);依据卡片 §5 同步面(v1.3 执行口径:实现批禁写 `design/`,逐条列清单、用户会话裁决后归文档批落文) +- 完成日 2026-10-17;清单条数 7 = 卡片 §5「反哺点 · 列清单待裁」行数(V9 对表;`active.md` 行属本批已更新例外、`game/presentation/views/*`+`game/smoke/*` 行属实施本体,均不计入) + +| # | 文件 · 节 | 改成什么 | 依据 | +|---|---|---|---| +| 1 | `design/gdd/06-待办清单.md` :429-435 | ①「未开格类型微光」条目状态:待办 → **完成**(批末重闸全绿后);②:431「候选值,样张批冻结」色相措辞修正为「色相 = art-bible §4.2 样张 v2 冻结值(既裁),本批只动明度」——06 :431 自身 2026-09-30 口径已声明「只承载实施状态、不承载定义」,措辞修正属批内机械面;③:435 旧读数(bonus_pick_overlay 位点)刷新为现行读数;④明度档 provisional 值登记去向 = 第 4 条 art-bible 修订条目,复核义务移交样张卡 | Q2 甲案裁定;art-bible :66/:551 冻结依据;§5 行 1 | +| 2 | `design/gdd/systems/表现与支撑/HUD框架.md` :140 / :269 | ①:140 实装状态行「游戏内待实施批」→「**已实装(迭代 30 卡① 2026-10-17)**」;②:269 验收行去「待实施批落地后验收」括注、转正式验收行;③版本历史追加一行(同批体例) | Q4 丙案默认开已入库;§5 行 2 | +| 3 | `design/gdd/08-Alpha版本标准.md` 「五 · 表现」表 | 新增「未开格类型微光」行:待做 → **在役**;行内注「明度档 provisional 值(Q2 甲案),战斗一屏样张批复核转正」;版本历史追加 | Q2 甲案;Alpha 判据(阻塞主流程/无法联调才算 alpha 阻塞——呈现增强不属);§5 行 3 | +| 4 | `design/art/art-bible.md` §4.2 修订条目(Q2 项) | 以修订条目登记五组明度档 provisional 值:芥末黄 #F7DF43/黄绿 #68D042/青 #30A6A6/紫罗兰 #7B5BD6/绯红 **#A61D37**(冻结 #FF2D55 的 V=0.65 档,色相零移动);注明生成口径 = 渲染合成空间(伽马)阶梯、相邻组模型 CR 1.245/1.234/1.239/1.270、复核归样张批。§4.2/§4.6.3 权威面零改动;§2.1 修订条目不追加(Q5 甲案静态、条件分支不触发) | Q2 甲案;2026-10-17 停机呈报用户裁「换更暗档 #A61D37」留痕(实现报告 §二-1);§5 行 4 | +| 5 | `roadmap.md` 迭代 30 行 | 编入笔已在案(2026-10-16 用户令);批内状态更新 = 卡① 完成(卡②样张批、卡③观感批串行待启),批末重闸 `--code` 全绿读数 | 三卡串行序位;§5 行 5 | +| 6 | `design/gdd/06-待办清单.md`(Q3 甲案追加) | ①「卡顶带与格面带分工」说明写入文档注记面(art-bible §4.2 或 HUD框架 微光节):两带并存、TG_* 卡顶带管货架卡面、TG_GLOW_* 管未开格微光,禁互为引用;②另登 06 一条新待办「卡顶色带与格面微光两带统一」(TG_* 迁移 = 原 T3 条件卡内容,Q3 甲案不并入本批) | Q3 甲案(不并入);§5 行 6 | +| 7 | `design/gdd/07-体验验证清单.md` | 新增实机目检人闸条:五组互辨观感(一眼可分)/不遮数字/出圈灭/整屏不脏+群伤暗档(#A61D37)实机辨识;人闸不可代、登记不阻塞。目检项全文已进 `reports/iter30-实现报告-2026-10-17.md` §五 总清单 | V10;§5 行 7 | + +## 附:不占反哺点条数的遗留(归实现报告 §六) + +- 阔视野带 desc「类型微光范围 8 格→12 格」与卡 §4「微光不随视野扩」冲突(`treasure_items.tres:47` 存量文本)——属数据文本批处置,非 design/ 文档同步面。 +- `type_glow_test.gd` 无 `.uid` 伴生——与库内 9 个存量未跟踪 `.uid` 同属卫生缺口。 diff --git a/reports/iter30-实现报告-2026-10-17.md b/reports/iter30-实现报告-2026-10-17.md new file mode 100644 index 00000000..4e251ad5 --- /dev/null +++ b/reports/iter30-实现报告-2026-10-17.md @@ -0,0 +1,92 @@ +# 迭代 30 卡① 未开格类型徽章批 · 实现报告 + +- 批次:迭代 30 卡①「未开格类型徽章批」(卡片 `design/research/需求卡片-未开格类型徽章批-2026-10-16.md` **v1.4**) +- 分支 `iter30-glow-20261017`/worktree `g-plan2-iter30-glow`;闸口径 = 本批只碰 `game/` → `tools/run_all_gates.sh --code` +- 完成日 2026-10-17;三卡串行序位第 1(卡②战斗一屏样张批、卡③二三关棋盘观感批不在本会话范围) +- 裁决基线:Q1 丙(shader 为主、程序绘制兜底)/Q2 甲(明度档 provisional 值本批定、样张批复核转正)/Q3 甲(TG_* 两带统一**不并入**)/Q4 丙(默认开)/Q5 甲(静态无呼吸);v1.4 开工前预授权 U1 四项(T0-③ 判据自判+调参上限 2 轮、卡③ Q2 判据自动裁、卡③目标带批内自定、L3 分类预授权) + +## 一、各任务卡状态 + +| 卡 | 状态 | 要点 | +|---|---|---| +| T0-① 归组表 | ✅ | 九 cell_type → 五组封闭表落 `ui_kit.gd:106 glow_group_for_cell_type`(attack/defense/weaken/action/gp→增益/heal→治疗/pierce→穿刺/blast→群伤/magic→魔法;清单外 → GLOW_NONE+显式登记,禁静默空光)。大宝箱(未来第十型)按 reward_economy :106 归通用增益组的路径在注释与单测负样本留位 | +| T0-② 明度档 provisional 值 | ✅ | 五档按**渲染合成空间**(伽马)单调阶梯定值(生成口径订正见 §二-3);相邻组模型 CR = 1.245/1.234/1.239/1.270(判据线 1.20),实测最弱对 1.232 | +| T0-③ 路线原型帧 | ✅ | 判据自判(U1-①):三条像素判据全过——①五组并列去色相模拟仍可分(V6 同口径抽检)②砖心数字字形占位区灰度扰动 ≤阈值(V4)③接触带不越圈、非生效格零变化(V4)。调参 2 轮内收敛(未触上限)。shader 与 `_desat_mat` 共存实测**未撞墙**(L3 预授权①未触发),丙案主路径全程有效、a 案兜底未启用 | +| T0-④ 基线与行号复核 | ✅ | golden 基线 2026-09-30 代三图判读有效(本批 off 帧漂移 0.10–0.13%,见 §三);未重制任何基线 | +| T1 实装 | ✅ | 色值单点 `ui_kit.gd:87-95 TG_GLOW_*`;shader 面 `cell_type_glow.gdshader`+承载件 `cell_type_glow_layer.gd`(CanvasItem 距离场,uniform 参数化);作用集与生命周期 `board_view.gd:329 _recompute_glow`(= `_diggable` ∩ 身份可查 ∩ 灯光区 − r0)、`:355 set_type_glow_enabled`(Q4 丙开关,生产写入面=组合根单点)、`:859 set_dig_glow_enabled` 相位门控与接触带同源;`type_glow_probe():1209`/`cell_rect_probe():1217` 取证面 | +| T2-① 冒烟断言段 | ✅ | `smoke_all.gd:1756 _smoke_type_glow` 八相 24 项新断言(作用集恒等/九型映射/清单外登记/封锁格/解封复位/开关两态/换图重算/契约 1 双实例) | +| T2-② 单测 | ✅ | `tests/unit/presentation/type_glow_test.gd` 五段 51 检查;登记 `run_all.gd:80`(33→34 套件) | +| T2-③ 探针走查段 | ✅ | `ui_input_probe.gd:495` case⑰(活板面:作用集恒等/真实挖开灭/移动复亮出圈灭/相位门控/两态零扰动);十八断言全绿 | +| T2-④ 渲染闸双帧 | ✅ | `board_shot_probe.gd` on/off 双帧+`_check_dual_frames:156`;三关 glow=2/4/4、outside=0、生效格实绘非空;off 帧 golden 0.13/0.11/0.10%(≤2%)。修通记录见 §二-2 | +| T4 产出物 | ✅ | 本报告+代拍板追认单+反哺点清单三份落 `reports/` | + +冒烟合计 **1151 项全绿**(基线 1127+本批新增 24);单测 **51/51**(34 套件全绿)。 + +## 二、停机呈报与裁定留痕 + +### 1. 群伤组微光色值触碰冻结色相(§8 L3——唯一一次停机呈报) + +- **事实**:群伤组(blast) provisional 初版取 #FF1A31,与 art-bible §4.2 冻结绯红 #FF2D55 的 HSV 对照 ΔH = 5.40°、ΔS = +0.075(V 不变)——色相朝纯红移动,侵蚀「冻结绯红刻意错开危险红」的间距,属翻动 §4.2 五组色相既裁冻结面(Q2 复核结论明令 L3 停机呈报,U1 预授权不含此项)。 +- **呈报**:四选项交用户裁(A 维持 #FF1A31=翻色相/B 退回纯 V 缩放更深档/C 换更暗档 #A61D37/D 停机回 Q2 复议)。 +- **裁定(2026-10-17 用户)**:**「换更暗档 #A61D37」**——冻结 #FF2D55 的 V=0.65 明度档,色相零移动(H=348.57°/S=0.824 逐位不动)。 +- **落地与复验**:`ui_kit.gd:91` 改值+头注稽核史登记(:72-86);复跑判据源探针与单测全绿。现五组 ΔH:BUFF 0.08°/HEAL 0.13°/PIERCE 0.00°/MAGIC 0.00°/AOE 0.042°——全部满足「只动明度、不动色相」。 + +### 2. board_shot_probe 双帧取证「glow=0」缺陷(批内自救,非停机项) + +两次实跑三关 glow=0:第一次根因 = 裸视图 `_dig_glow=false`(加 `set_dig_glow_enabled(true)` 修复);第二次根因 = **裸视图从未接身份解析回调**(生产由 main.gd:251 接线,`_recompute_glow` 拿不到身份 ⇒ 作用集恒空、双帧比对空转、PASS 假绿)。修复 = `board_shot_probe.gd:83` 接生产同源 `_probe_identity_lookup:146`(板在守卫+Active 相位守卫+`query_reward_identity` 只读代理,相位前提:每轮 settle_batch 末尾 `_exit_distribution` 已 `notify_round_start`)。附带排一个 Godot 坑:`Callable.bind()` 动态派发对类型化参数做 Object 硬校验(「Cannot convert argument 2 from Object to Vector2i」)→ 改成员现值+直接方法引用(代码注释留痕)。 + +### 3. 明度阶梯生成口径订正(T0-② 内自救) + +首版按 CIE L*(线性域)排档,把群伤/魔法排反(绯红线性亮于紫罗兰,但伽马空间绯红 G+B 通道低、合成后更暗——实测最弱对 CR 仅 1.05)。订正 = 阶梯改在**渲染合成空间**排(引擎 canvas 混合在帧缓冲 sRGB 空间做线性插值,色弱玩家看到的是合成值);合成模型「带内均值 ≈ 0.49×色值 + 0.51×瓦片(BRICK #C9AF83)」,模型域与实测差 = shader 距离场权重非扁平混合 ⇒ 互辨判据终审在渲染取证探针实测(`ui_kit.gd:78-86` 头注留痕)。 + +## 三、闸读数表 + +| 闸 | 读数 | 判定 | +|---|---|---| +| 冒烟(run_smoke.py) | 1151 项/0 失败(新增 24 项:八相全绿) | 绿 | +| 单测(run_all.gd) | 34 套件全绿;type_glow_test 51/51 | 绿 | +| ui_input_probe | 十八断言全绿(⑰ 新增;活板面 glow=2、相位门控两态零扰动) | 绿 | +| type_glow_shot_probe(判据源探针) | glow_cells=5、groups=[1–5]、changed_total=4760、changed_outside=0;相邻组实测 CR 最弱对 1.232(组2/组3)、组4/组5=1.423 | 绿 | +| board_shot_probe 双帧(on/off) | L1 glow=2 changed=1912 outside=0;L2 glow=4 changed=3816 outside=0;L3 glow=4 changed=3792 outside=0(band_px=5.75 = 格边 46×0.125) | 绿 | +| golden 逐像素(off 帧 vs 2026-09-30 基线) | L1 0.13%/L2 0.11%/L3 0.10%(≤16 差/≤2%) | 绿 | +| 菜单 golden | menu_boot 0.14% | 绿 | +| 静态扫描(09) | 相对基线「改善」(批内两处新增红已修:R1A 无类型容器、文件头 9 行;基线存量红 fp=4354b2aa72a7 不属本批) | 绿 | +| render_gate.sh 整闸 | 全绿(shot_probe 七屏 A-D/fx 取证/双帧/golden 四图/残留 0) | 绿 | + +> 双帧 glow 格数(2/4/4)低于判据源探针(5)是**真实面与夹具面的差异**:探针接 settlement 真实 `query_reward_identity`,作用集随当板摇号与 18 步 novice 揭示态而定;五组齐现的互辨取证在判据源探针(夹具面)承载,两面分工不混。 + +## 四、变异验证记录表(新建断言段的注入实验) + +| # | 变异点(file:行) | 注入内容 | 跑的闸 | 红输出(实录) | 还原结论 | +|---|---|---|---|---|---| +| M1 | `ui_kit.gd:111` | `"heal"` 错映 GLOW_BUFF | 单测 type_glow_test | `[FAIL] 九型封闭:heal → 组1(期望组2)`(1/51 失败) | ✅ 还原后复跑 51/51 | +| M1' | 同上(保留叠加) | 同上 | 冒烟 run_smoke.py | `[FAIL] V2 九型→五组逐格映射 … 违例:(2, 1):heal→组1(期望组2)` | ✅ 同轮还原 | +| M2 | `board_view.gd:344-349` | 清单外 cell_type 静默跳过(去 `_glow_errors` 登记) | 冒烟(与 M1 同轮,断言足迹不相交) | `[FAIL] V2 清单外 cell_type 显式登记(errors=[])`+`[FAIL] V1 封锁格零登记(errors 仍仅清单外一条——[])` | ✅ 还原后复跑全绿 | +| M3 | `board_view.gd:874` | 相位切换不重算作用集(注掉 `_sync_glow_to_units` 内 `_recompute_glow`) | 冒烟 | `[FAIL] V1 作用集恒等:微光格集合 == _diggable ∩ 身份可查(期望 5,实测 0)` | ✅ 还原后复跑全绿 | +| M3' | 同上 | 同上 | ui_input_probe | `FAIL — case⑰ 结算相位未灭(作用集 1 格——相位门控破)` | ✅ 同轮还原 | +| M5 | `board_view.gd:332-337` | 微光派生路径误触玩法 API(`_recompute_glow` 内 `settle_batch(flag_place)`——契约 1「纯派生零玩法写入」破坏面) | 冒烟 | `[FAIL] 契约 1 同板同序列 on/off 两态结算逐位一致 … 第 0 步(move)后摘要分叉`+`[FAIL] 契约 1 对照前提:同序列 ≥5 步(实测 0)` | ✅ 还原后复跑全绿 | +| M4 | `ui_kit.gd:92` | `TYPE_GLOW_ALPHA := 0.0`(不绘) | render_gate.sh | 三关全红:`微光开帧整板零变化(微光未生效)`+每生效格 `零实绘像素(微光空转)`;闸 exit 1 | ✅ 还原后整闸复跑全绿 | + +五组变异覆盖五类断言面:归组封闭(M1)/禁静默空光(M2)/生命周期接线(M3)/契约 1 零玩法写入(M5)/像素实绘(M4)。变异残留零检出(`grep M[1-5] 变异` 全库为空)后才进的批末重闸。 + +## 五、实机目检总清单(V10 人闸——登记不阻塞) + +> 人闸不可代。以下项待用户实机过目;T0-③ 原型帧三道判据为目检第一道(已自判过,见 §一),批末本清单为第二道。 + +| # | 目检项 | 判据 | 状态 | +|---|---|---|---| +| 1 | 五组一眼可分 | 色相+明度双码下去色相仍可分组(机检预判已过:最弱对 CR 1.232;误读率终判归样张批 §4.6.3 :325 既裁) | 待用户目检 | +| 2 | 不遮数字 | 微光不入砖心数字字形占位区(机检已过:带外零侵入、砖心留白;V4) | 待用户目检 | +| 3 | 出圈灭 | 英雄移出可挖域/相位切结算即灭(机检已过:case⑰) | 待用户目检 | +| 4 | 整屏不脏 | 默认开态下棋盘观感无杂乱感(「很丑」质疑的终审位) | 待用户目检 | +| 5 | 群伤组暗档观感 | #A61D37 实机辨识度(停机呈报裁定的暗档,样张批复核转正前的 provisional 态) | 待用户目检 | + +「入册 07-体验验证清单」列反哺点(见反哺点清单第 7 条)。 + +## 六、遗留读数义务 + +1. **阔视野带 desc 与微光口径冲突(存量观察,不占反哺点条数)**:`game/data/tables/treasure_items.tres:47` 阔视野带(wide_scout_band)desc 写「类型微光范围 8 格→12 格」,与卡 §4「不扩微光环半径——贴身 8 格是已拍板口径(HUD框架 :167),阔视野带类道具一律不扩微光」冲突;且实现面微光作用集恒为 `_diggable`(英雄 8 邻)子集,`light_radius_bonus` 只放大灯光区(`FOG_RADIUS + _fog_lantern` 门控),不可能把微光扩到 12 格。desc 属数据文本滞后(早于本批写成),建议归秘宝/数据文本批订正——本批不改数据表(只碰代码与断言面),仅登记。 +2. **`type_glow_test.gd` 无 `.uid` 伴生**:该件只经 `--script` 跑(编辑器未导入)故未生成 `.uid`;与库内 9 个存量未跟踪 `.uid`(layout_probe/screen_flow_probe/save_rng_roundtrip 等)同属卫生缺口,不随本批提交,留卫生批/文档批处置。 +3. **golden 基线未重制**:本批 off 帧对 2026-09-30 代三基线漂移 0.10–0.13%(接触带静态化预期面,契约 6 未触发),基线原样在库。 +4. **群伤暗档 provisional 属性**:#A61D37 为 Q2 甲案 provisional 值,复核转正归战斗一屏样张批(卡②);样张冻结值若与本值不一致,走 `ui_kit` 色值单点改值+冒烟/单测色值断言同步(机械面,不构成路线翻案)。 +5. **V6 误读率指标**:本批只跑机检抽检预判(去色相五组可分),误读率定量终判归样张批(§4.6.3 :325 既裁),本报告不代拍。