一个基于原生微信小程序实现的小游戏合集。项目当前提供 4 个独立游戏页面,首页负责统一展示和跳转,适合作为小游戏原型、Canvas 交互练习和小程序多页面项目参考。
- 微信小程序:
Sdite Game
- 原生微信小程序实现,无额外前端框架依赖
- 首页统一管理游戏入口,游戏注册集中在
pages/games/gameRegistry.js - 包含 Canvas 游戏、规则推演游戏、汉字构形解谜等多种玩法
- 使用
wx本地存储保存分数、设置和关卡记录 app.js注入了全局分享配置,并接入了小程序更新管理
| 游戏 | 类型 | 说明 |
|---|---|---|
| 箭域迷阵 | 连锁消除 / 益智 | 8×8 棋盘,点击一个起点后触发箭头连锁,目标是一次清空全盘;支持提示、逐步模式、箭头权重调节 |
| Ball Defender | 反弹打砖块 | Canvas 小球弹射游戏,支持历史最高分、断点续玩、长按加速和可选的小球碰撞设置 |
| 生命游戏 | 规则推演 / 观赏 | 基于 Conway's Game of Life,包含预测模式和观赏模式,支持难度切换、自动演化和预设图案 |
| 精准造字 | 汉字构形 / 路径规划 | 6×6 棋盘、6 个部首、每回合选 4 个部首组字并沿相邻格移动;内置 21 个关卡,支持撤销、计时和最佳记录 |
- 微信小程序原生:
JS + WXML + WXSS - CommonJS 模块组织
- Canvas 2D:
arrowMaze、ballDefender - 微信 API:
wx.createInnerAudioContext、wx.getStorageSync、wx.setStorageSync、wx.getUpdateManager - 题库辅助脚本:
Python(仅charPuzzle/check使用,不参与小程序运行)
- 安装并打开微信开发者工具。
- 选择“导入项目”。
- 项目目录指向仓库根目录:
000my_game。 - 使用
project.config.json中的配置导入项目;如果你的环境需要自己的 AppID,可自行替换。 - 编译后从首页进入各游戏页面进行调试。
说明:
- 项目没有
npm依赖,通常不需要执行npm install - 当前项目类型为
miniprogram packOptions.ignore已忽略.git、openspec、pages/games/charPuzzle/check等非运行目录
- 小程序页面在
app.json中注册 - 首页逻辑在
pages/index/index.js - 首页展示内容来自
pages/games/gameRegistry.js
如果要新增一个游戏,最少需要完成下面几步:
- 在
pages/games/下新建独立目录和页面文件 - 在
app.json中注册页面路径 - 在
pages/games/gameRegistry.js中加入游戏元信息 - 如果首页要展示该游戏,保证注册表中包含
id、name、description、pagePath
项目当前使用如下本地存储键:
arrowMazeWeights:箭域迷阵的箭头权重设置ball_defender_high_score:Ball Defender 历史最高分ball_defender_game_state:Ball Defender 断点续玩状态ball_defender_settings:Ball Defender 设置项charPuzzle_records:精准造字各关最佳成绩
pages/games/charPuzzle 除了运行时页面,还包含一套离线题库辅助文件:
levels.js:内置关卡数据与参考解charCombinations.js:部首与字根的组合映射check/solver.py、check/checker.py、check/generate.py:用于校验或生成关卡check/rule.md:把玩法抽象成搜索 / 剪枝问题的说明
这些脚本主要面向题库维护,不属于小程序运行链路。
- 全局默认分享文案注入
- 小程序热更新提示
- Canvas 高分屏适配
- 音效资源复用
- 规则弹窗、结果弹窗、设置弹窗
- 本地记录恢复和持久化
- 当前仓库未配置自动化测试与 CI,主要依赖微信开发者工具进行手动调试
.eslintrc.js已提供基础 ESLint 配置,但仓库本身没有锁定一套 npm 形式的 lint 工作流