32 lines
2.7 KiB
Markdown
32 lines
2.7 KiB
Markdown
# 玩法变种 Lab
|
||
|
||
运行 `npm run dev`,打开 http://localhost:4173/labs/variants/index.html 。
|
||
|
||
这是用户授权的独立玩法原型,包含三种模式,各 5 关。主线规则、界面、编号和存档不变。Lab 本身不保存进度;刷新后回到首关。模式可用 `?mode=color`、`?mode=switch`、`?mode=relay` 直达。
|
||
|
||
## 规则
|
||
|
||
- 分色归站:所有边界端口分配橙色或蓝色终点,棋子只能从同色端口离场。外围终点不随底盘旋转。错色、碰撞和闭环均返回原位。
|
||
- 机关换轨:标记 A 的棋子离场后,切换金色 A 格的两套轨道配对。机关格及其两套配对随底盘旋转。每关一个一次性机关;冻结参考解中,机关会实际打开至少一枚剩余棋子的出口。
|
||
- 接力停靠:中央 P 点固定在世界坐标。经过 P 时先驶入格中心,停下后箭头变为该格轨道出口方向;再次点击从此方向出发。每次重新进入 P 都会停靠。P 被占用时不能进入。只检测抵达 P 之前的碰撞,不受 P 后方障碍影响。
|
||
|
||
全模式保留免费旋转、免费试路、弯轨自动转向和交叉不换轨。采用顺序动画输入,动画期间暂停发车和旋转;重来和切关可以取消动画。撤销恢复完整状态,包括机关、停靠位置和朝向。提示在当前局面重新搜索;无解或搜索超限有独立反馈。
|
||
|
||
## 实现与关卡
|
||
|
||
`model.js` 复用主线 `core.js` 的寻路、旋转和 `path-math.js` 的连续碰撞与曲线采样。实验规则仅在 Lab 模型中扩展,不修改主线模型。Canvas 负责实验标记与轨迹动画,棋子大小与共享碰撞体一致。
|
||
|
||
`levels.json` 冻结 15 关、确定性种子、完整动作解和机制证据。每关 19 格、3–5 枚棋子,先验证机制是否易懂;这些是原型样本,不代表经过真人标定的难度曲线。
|
||
|
||
`generate.mjs` 按确定性候选筛选:完整可解、实际经过弯轨、参考解需要旋转;机关关必须触发开路;接力关必须发生停靠。局面搜索包含朝向、剩余棋子位置与方向、机关状态,不能沿用主线“安全棋子全部贪心移除”的简化。
|
||
|
||
重新生成:`node labs/variants/generate.mjs`。
|
||
规则验证:`node --test tests/variants.test.js`。
|
||
静态打包:`node scripts/build.mjs`(Lab 已加入复制清单)。
|
||
|
||
## 验证范围
|
||
|
||
15 关数据校验、独立求解和冻结解回放;六次旋转恢复两套机关轨道;错色不改变状态;停靠截断路径、占位阻挡及继续出发;每步不修改历史快照。
|
||
|
||
浏览器检查桌面和 390×844 手机视口、模式切换、选关、提示与通关。当前仅 Web 原型,未移植或验收 Cocos、Android、iOS。尚未开展真人玩法偏好测试。
|