Files
HexTrails/labs/variants/README.md
T

2.7 KiB
Raw Blame History

玩法变种 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。尚未开展真人玩法偏好测试。