初始提交:三玩法 Web 原型与设计文档

- 玩法一 数字一笔:规则库、求解器、26 关、竖屏触摸 Web 原型、测试
- 玩法二 连连气球:连消畅玩版核心、Web 原型、Cocos 球槽组件与导出脚本
- 玩法三 六边一笔:规则库、求解器、10 关 + 转墙实验包、Web 原型、测试
- 产品文档、UI 设计规范、各玩法 GDD / HANDOFF
- 文档移除全部外部参考作引用;删除玩法二 v0 旧稿
This commit is contained in:
cabinw
2026-09-16 14:30:59 +08:00
commit 8026e4628d
169 changed files with 22162 additions and 0 deletions
@@ -0,0 +1,222 @@
{
"mode": "03-hex-walls",
"pack": 2,
"title": "转墙",
"orientation": "pointy",
"notes": "实验包。spinners = 绕顶点转的墙:{cell, corner, phase},顶点是 cell 的第 corner 个角(30° 起顺时针 0..5),三条候选边顺时针编号,已走 t 格时墙在第 (phase+t) mod 3 条边。格 id 按阅读顺序编号。",
"levels": [
{
"id": "2-1",
"teach": "教转墙。1 在中心,轴心在左下三格交汇的顶点。起手后墙正好挡住 1 的左邻,直觉往左会撞墙;绕右侧走一圈回来时墙已经转开。去墙后 2 解。",
"caption": "这堵墙会转:每走一格转一下",
"cells": [
{ "id": "a", "q": 0, "r": -1 },
{ "id": "b", "q": 1, "r": -1, "clue": 7 },
{ "id": "c", "q": -1, "r": 0 },
{ "id": "d", "q": 0, "r": 0, "clue": 1 },
{ "id": "e", "q": 1, "r": 0 },
{ "id": "f", "q": -1, "r": 1 },
{ "id": "g", "q": 0, "r": 1 }
],
"walls": [],
"spinners": [
{ "cell": "c", "corner": 0, "phase": 1 }
]
},
{
"id": "2-2",
"teach": "算拍子。4 在 1 的正上方,直接上去是 2,绕一格是 3,只有绕两格(g,h,d,c)才是 4;到了 4 再往左时墙刚好转开。去墙后 6 解。",
"cells": [
{ "id": "a", "q": 0, "r": 0 },
{ "id": "b", "q": 1, "r": 0 },
{ "id": "c", "q": 2, "r": 0, "clue": 4 },
{ "id": "d", "q": 3, "r": 0 },
{ "id": "e", "q": 0, "r": 1 },
{ "id": "f", "q": 1, "r": 1 },
{ "id": "g", "q": 2, "r": 1, "clue": 1 },
{ "id": "h", "q": 3, "r": 1 }
],
"walls": [],
"spinners": [
{ "cell": "b", "corner": 0, "phase": 2 }
]
},
{
"id": "2-3",
"teach": "静态墙 + 转墙综合。1 在右下角,12 就在旁边,说明要绕整盘一圈最后从上方进 k。左下角三格 e/i/j 的转墙决定绕到左侧时能不能顺利下去,拍子不对就得走错。去墙后 9 解。",
"cells": [
{ "id": "a", "q": 0, "r": 0 },
{ "id": "b", "q": 1, "r": 0 },
{ "id": "c", "q": 2, "r": 0 },
{ "id": "d", "q": 3, "r": 0 },
{ "id": "e", "q": 0, "r": 1 },
{ "id": "f", "q": 1, "r": 1 },
{ "id": "g", "q": 2, "r": 1 },
{ "id": "h", "q": 3, "r": 1 },
{ "id": "i", "q": -1, "r": 2 },
{ "id": "j", "q": 0, "r": 2 },
{ "id": "k", "q": 1, "r": 2, "clue": 12 },
{ "id": "l", "q": 2, "r": 2, "clue": 1 }
],
"walls": [
["d", "h"]
],
"spinners": [
{ "cell": "j", "corner": 3, "phase": 0 }
]
},
{
"id": "2-4",
"teach": "两个转墙,轴心相邻。1、2 并排在顶行,2 之后要下到中心再折向左;两堵墙一前一后决定下去和折回的拍子。去墙后 8 解。",
"cells": [
{ "id": "a", "q": 0, "r": -1 },
{ "id": "b", "q": 1, "r": -1 },
{ "id": "c", "q": -1, "r": 0 },
{ "id": "d", "q": 0, "r": 0 },
{ "id": "e", "q": 1, "r": 0 },
{ "id": "f", "q": -1, "r": 1, "clue": 2 },
{ "id": "g", "q": 0, "r": 1, "clue": 1 }
],
"walls": [],
"spinners": [
{ "cell": "d", "corner": 5, "phase": 0 },
{ "cell": "a", "corner": 0, "phase": 1 }
]
},
{
"id": "2-5",
"teach": "三角盘 10 格,两个转墙一个在顶行右侧、一个在底尖。1 在第二行右端,6 在第二行左端:先绕下面的小三角(f,i,j,h)再到 6,最后走顶行。去墙后 8 解。",
"cells": [
{ "id": "a", "q": 0, "r": 0 },
{ "id": "b", "q": 1, "r": 0 },
{ "id": "c", "q": 2, "r": 0 },
{ "id": "d", "q": 3, "r": 0 },
{ "id": "e", "q": 0, "r": 1, "clue": 6 },
{ "id": "f", "q": 1, "r": 1 },
{ "id": "g", "q": 2, "r": 1, "clue": 1 },
{ "id": "h", "q": 0, "r": 2 },
{ "id": "i", "q": 1, "r": 2 },
{ "id": "j", "q": 0, "r": 3 }
],
"walls": [],
"spinners": [
{ "cell": "c", "corner": 2, "phase": 1 },
{ "cell": "h", "corner": 0, "phase": 1 }
]
},
{
"id": "2-6",
"teach": "三个转墙围着中心 g:g 的三条边轮流被挡,什么时候进、什么时候出都要算。去墙后 20 解。",
"cells": [
{ "id": "a", "q": 0, "r": 0 },
{ "id": "b", "q": 1, "r": 0 },
{ "id": "c", "q": 2, "r": 0 },
{ "id": "d", "q": 3, "r": 0 },
{ "id": "e", "q": 0, "r": 1, "clue": 11 },
{ "id": "f", "q": 1, "r": 1 },
{ "id": "g", "q": 2, "r": 1 },
{ "id": "h", "q": 3, "r": 1 },
{ "id": "i", "q": -1, "r": 2, "clue": 1 },
{ "id": "j", "q": 0, "r": 2 },
{ "id": "k", "q": 1, "r": 2 },
{ "id": "l", "q": 2, "r": 2 }
],
"walls": [],
"spinners": [
{ "cell": "c", "corner": 0, "phase": 1 },
{ "cell": "k", "corner": 4, "phase": 2 },
{ "cell": "g", "corner": 3, "phase": 0 }
]
},
{
"id": "2-7",
"teach": "15 格,一堵静态墙加三个转墙挤在右侧。左半盘先走完,进右侧时三堵墙的拍子要同时对上。去墙后 49 解。",
"cells": [
{ "id": "a", "q": 0, "r": 0 },
{ "id": "b", "q": 1, "r": 0, "clue": 1 },
{ "id": "c", "q": 2, "r": 0 },
{ "id": "d", "q": 3, "r": 0 },
{ "id": "e", "q": 4, "r": 0 },
{ "id": "f", "q": 0, "r": 1 },
{ "id": "g", "q": 1, "r": 1, "clue": 7 },
{ "id": "h", "q": 2, "r": 1 },
{ "id": "i", "q": 3, "r": 1 },
{ "id": "j", "q": 4, "r": 1 },
{ "id": "k", "q": -1, "r": 2 },
{ "id": "l", "q": 0, "r": 2 },
{ "id": "m", "q": 1, "r": 2 },
{ "id": "n", "q": 2, "r": 2 },
{ "id": "o", "q": 3, "r": 2 }
],
"walls": [
["d", "e"]
],
"spinners": [
{ "cell": "h", "corner": 0, "phase": 1 },
{ "cell": "i", "corner": 0, "phase": 2 },
{ "cell": "n", "corner": 5, "phase": 2 }
]
},
{
"id": "2-8",
"teach": "17 格,三个转墙分布三处。1 在右侧内圈,先上顶行绕左半盘,最后从底部回右侧。去墙解 52。",
"cells": [
{ "id": "a", "q": 0, "r": -2 },
{ "id": "b", "q": 1, "r": -2 },
{ "id": "c", "q": 2, "r": -2 },
{ "id": "d", "q": -1, "r": -1 },
{ "id": "e", "q": 0, "r": -1 },
{ "id": "f", "q": 1, "r": -1 },
{ "id": "g", "q": -2, "r": 0 },
{ "id": "h", "q": -1, "r": 0, "clue": 1 },
{ "id": "i", "q": 0, "r": 0 },
{ "id": "j", "q": 1, "r": 0 },
{ "id": "k", "q": 2, "r": 0, "clue": 10 },
{ "id": "l", "q": -2, "r": 1 },
{ "id": "m", "q": -1, "r": 1 },
{ "id": "n", "q": 0, "r": 1 },
{ "id": "o", "q": 1, "r": 1 },
{ "id": "p", "q": -1, "r": 2 },
{ "id": "q", "q": 0, "r": 2 }
],
"walls": [],
"spinners": [
{ "cell": "h", "corner": 3, "phase": 0 },
{ "cell": "m", "corner": 0, "phase": 2 },
{ "cell": "k", "corner": 2, "phase": 2 }
]
},
{
"id": "2-9",
"teach": "19 格满花盘,四个转墙。1 在内圈下方,8 在内圈上方,17 在最左;两次穿过内圈都要踩准拍子。去墙后 41 解。",
"cells": [
{ "id": "a", "q": 0, "r": -2 },
{ "id": "b", "q": 1, "r": -2 },
{ "id": "c", "q": 2, "r": -2 },
{ "id": "d", "q": -1, "r": -1 },
{ "id": "e", "q": 0, "r": -1 },
{ "id": "f", "q": 1, "r": -1, "clue": 8 },
{ "id": "g", "q": 2, "r": -1 },
{ "id": "h", "q": -2, "r": 0, "clue": 17 },
{ "id": "i", "q": -1, "r": 0 },
{ "id": "j", "q": 0, "r": 0 },
{ "id": "k", "q": 1, "r": 0 },
{ "id": "l", "q": 2, "r": 0 },
{ "id": "m", "q": -2, "r": 1 },
{ "id": "n", "q": -1, "r": 1, "clue": 1 },
{ "id": "o", "q": 0, "r": 1 },
{ "id": "p", "q": 1, "r": 1 },
{ "id": "q", "q": -2, "r": 2 },
{ "id": "r", "q": -1, "r": 2 },
{ "id": "s", "q": 0, "r": 2 }
],
"walls": [],
"spinners": [
{ "cell": "n", "corner": 4, "phase": 1 },
{ "cell": "o", "corner": 4, "phase": 2 },
{ "cell": "r", "corner": 3, "phase": 0 },
{ "cell": "f", "corner": 0, "phase": 1 }
]
}
]
}