# 星际翻牌：设计交付规格

本文件是设计与开发契约模板，不是完整游戏程序。
源设计：figma-demo；节点映射见 figma-manifest.json。
基准：390×844，竖屏；左右 inset=24，棋盘 inset=12，gap=12。

## 布局

- Header → Status → 标题 → Board → 说明，纵向组织。
- Board 为三列四行；Card 基准 98×112，圆角 16。
- cardWidth=min(98,(windowLogicalWidth-96)/3)，cardHeight=cardWidth×112/98。
- 上述公式适用于本案例测试宽度；更窄设备需重新判断最小触达与排布。
- 安全区、胶囊与窗口数据由微信运行时读取；缺失 safeArea 时使用明确回退。
- 逻辑坐标、画布像素与纹理像素分开，由引擎/适配层统一转换。

## 组件

- Button：Label Text 属性。主操作有唯一优先级；次操作降低强调。
- Card：State=Hidden/Revealed/Matched/Mismatch；Artwork 使用实例交换。
- Artwork：Saturn/Sun/Moon/Comet/Crystal/Rocket 六种原创矢量组件。
- cardId 为十二个实体身份；patternId 为六种图案身份，二者不可混用。
- Hidden 不显示图案；Matched 不再接受配对输入。

## 事件与时序

- selecting 接受第一张及合法第二张，禁止重复选同一卡。
- comparing 锁输入；同图案进入 matched，不同图案反馈后翻回。
- 翻开过渡建议 180ms；失配停留建议 800ms，真机调节。
- pause 保留进入前阶段；恢复时不得洗牌或丢失选择。
- restart 清理旧计时器、动画与回调；异步结果需关联局 ID。
- 成功/失败与奖励发放分开；真实奖励须考虑幂等、提交中和重试。

## 原型范围

原型为有限路径：第1张翻开，第2张失配，第7张匹配。
底部教学入口演示结算；不执行随机洗牌、实时计步、真实音频或发奖。
静态成绩和开关均为教学数据。

## 资源与字体

SVG 源资产与 PNG 预览见 asset-manifest.json。
生产引擎按实际支持栅格化/打包图集，验证描边、透明边缘与内存。
设计字体：Inter（中文使用环境回退）；上线前选择有明确授权的中文字体与回退。
wx.loadFont 返回 null 时使用回退字体，重新检查数字和长文案宽度。

## 必测

iOS/Android、不同宽高比、安全区、长文字、数字极值、字体失败、快速连点、
第三张抢点、触摸取消、多点、切后台恢复、重开后的旧回调、资源失败。
逐项记录设计/原型/工具调试/真机证据，不能用 Figma 截图替代真机验证。
