泉州文旅游戏棋生成器
用途
产出一份单文件 HTML 的可玩棋盘游戏:手绘卡通风格蛇形棋盘、掷骰子、多玩家轮流、文旅关卡(美食奖励、知识问答、天气惩罚)、终点胜负结算。开箱即用,双击浏览器就能玩,也可以原样打印。
游戏内核已固化在 assets/quanzhou-board-game.html,是一个自包含 HTML(无外部依赖,内联 SVG 插画与棋子)。执行任务时复制这份模板再做定制,不要从零手写。
何时使用
- 用户要「泉州旅行棋」「泉州文旅游戏」「泉州研学小游戏」的电子版
- 用户给了手绘棋盘照片,想数字化成可玩的网页
- 用户想把该模板改成其他城市或景区(如「土楼旅行棋」「武夷山研学棋」)
- 需要一份能现场玩、能投影、能打印的文旅互动教具
快速上手
- 把
assets/quanzhou-board-game.html复制到工作目录,命名为index.html - 按需求改「定制点」(见下),其余逻辑保持不动
- 用
present_files打开预览,让用户直接试玩 - 若用户要打印版,说明打印建议(A3 横向、缩放 90%、关闭背景图形)
cp assets/quanzhou-board-game.html <目标目录>/index.html
模板已实现的能力(改之前先了解)
| 模块 | 位置(模板内标识) | 说明 |
|---|---|---|
| 路线坐标 | function posOf(n) |
53 格,自下而上蛇形:1–13 底排向右 → 14–26 折返 → 27–39 再向右 → 40–53 顶排向左(53 在最左) |
| 关卡表 | const REWARDS = {...} |
键为格号,含 icon/type/v/msg;type 支持 fwd(前进)/back(后退)/skip(停一轮)/again(再掷一次)/quiz(问答判定) |
| 格子配色 | const COLORS = [...] |
8 色循环,手绘马卡龙色系 |
| 棋子 | const KIDS = [...] |
4 个内联 SVG 手绘小朋友:花环妹妹、双马尾女孩、背带裤男孩、长发姐姐 |
| 地标插画 | 两个 .spot div |
左下角九日山(起点)、左上角东西塔(终点,紧贴 51 号格) |
| 胜负逻辑 | winning() / showFinal() |
到 53 格即胜,其余按距离排名,弹出 🥇🥈🥉 结算面板 |
当前关卡:4 面线糊 +2、20 趣味问答答错 −3、26 四果汤 +5、33 下雨 −2、38 满煎糕 +5、47 烧肉粽 停一轮、51 开元寺祈福 再掷一次。
常见定制点
改关卡:只改 REWARDS 字典,键用 1–52 中未被占用的格号。格式:
12:{icon:'🏛️',type:'fwd',v:3,msg:'🏛️ 清净寺<br>伊斯兰古寺超壮观<br><b>前进 3 格!</b>'}
msg 支持 HTML(<br>、<b>),显示在棋盘中央弹出条。
改地标:替换两个 .spot 内的内联 SVG 与文字。坐标约束:起点插画用 left:10px;bottom:8px,终点插画用 left:10px;top:8px,宽度不超过 170px,否则与 1 号 / 51 号格重叠。
改城市主题:同步替换 ① 竖排标题 .title;② 两个地标 SVG 与地名;③ REWARDS 里的美食景点;④ <title> 与侧栏 .panel h1 文案。
改格数:posOf() 的分段边界(13/26/39/53)与 winning() 判定阈值需一起改,改完必须跑坐标自检。
改玩家数:侧栏已有 1/2/3/4 人下拉框和自定义名字输入,无需改代码。
坐标自检(改格数或间距后必做)
"C:/Users/Administrator/.workbuddy/binaries/python/versions/3.13.12/python.exe" - <<'PY'
GAP_X,GAP_Y,OX,OY=60,140,54,566
def posOf(n):
k=n-1
if n<=13: row,col=0,k
elif n<=26: row,col=1,12-(k-13)
elif n<=39: row,col=2,k-26
else: row,col=3,13-(k-39)
return OX+col*GAP_X, OY-row*GAP_Y+((n*7)%9)-4
xs=[posOf(n)[0] for n in range(1,54)]
ys=[posOf(n)[1] for n in range(1,54)]
print("x:",min(xs)-22,max(xs)+22,"y:",min(ys)-22,max(ys)+22,"棋盘 940x690")
PY
要求 x 落在 30–870、y 落在 90–640,否则格子会溢出或压到地标。
已知约束
- 纯前端、无存档,刷新即重开;要保存进度需额外接 localStorage
- 问答格目前随机判对错(70% 答对);要真问答,把
type:'quiz'分支改成弹出选择题并等点击 - 棋子按格号中心 ±12px 偏移错开,四人同格会略微重叠,属预期效果
- 不引入外部 CDN 字体或图片,否则破坏离线可玩性
交付口径
生成后必须调用 present_files 打开预览,并在回复里说明起点、终点、关卡清单、支持人数、获胜规则。默认用中文讲解。
手绘原图对照与设计取舍见 references/design-notes.md。