单文件2048沙箱实践:合并规则测试与公网访问核验
2026年10月22日,我使用AI辅助生成并验证了一个单文件网页小游戏“云上方格2048”,随后在华为云免费开发体验环境中完成沙箱部署。这篇记录保留实际做过的检查,方便复现,也说明当前版本的使用范围。
先把规则从页面事件中分出来
项目把HTML、CSS和JavaScript放在同一个index.html中,没有外部脚本或图片依赖。界面提供方向键和四个方向按钮,核心规则由slideLine、boardMove和canMove三个函数处理,页面事件只负责接收操作、更新棋盘和显示分数。
合并顺序是最需要单独检查的部分。一行[2,2,2,2]向左移动,应得到[4,4,0,0],增加8分;同一步不能继续把两个4合成8。一行[2,2,4,0]向左移动,结果同样是[4,4,0,0],但只增加4分,因为原有的4没有参与这次合并。这两个输入能检查出连锁合并和分数累加中的常见错误。
每次有效移动后,空位才会生成一个值为2或4的新方块。无效移动不应改变棋盘,也不应新增方块。boardMove返回是否发生变化,界面据此决定是否生成新方块,避免把键盘事件本身当作一次有效操作。
测试实际使用的核心代码
仓库中的verify.cjs从HTML中提取game-core脚本,再通过Node内置的vm和assert/strict模块执行断言。这样测试的就是页面内的规则代码,不需要另写一套规则副本。
验证命令为:
node verify.cjs
本次12项断言通过,覆盖单步只合并一次、合并得分、上下左右四个方向、无法继续移动的棋盘、无效移动,以及输入数组不被修改。其中,横向相邻的两个2向上移动时不应被合并;纵向相邻的两个2向下移动,则应在底行形成4。方向转换和单行规则都需要检查。
在浏览器中,我还实际点击了四个方向按钮,确认方块会移动、合并并累积分数。页面实现了触摸滑动识别,但此次没有做手机真机验证。
先运行静态服务,再核对公网内容
取得源码后,可在项目目录运行:
python3 -m http.server 8080 --bind 0.0.0.0
本机通过http://127.0.0.1:8080/访问。在云端,本次使用华为云免费开发体验环境运行静态服务,再通过DevBridge公开预览地址访问。游戏没有登录入口或后端业务服务,运行所需文件就是这个HTML文件。
服务启动后,我检查了公网地址的HTTP HEAD和GET请求,两者均返回200;随后对比返回内容与部署源文件的SHA-256,结果一致。浏览器操作检查则用来确认实际页面的按钮、合并和计分能工作。HTTP检查、内容校验和交互检查分别确认了地址可达、文件一致、页面可用。
这个版本把最佳分保存在当前浏览器的localStorage中,不上传服务器,也不跨设备同步。完整对局没有保存,刷新页面会重新开始;浏览器禁用本地存储时,游戏仍能运行,但最佳分不能持久保留。
提交成果后,单独核对到账
沙箱成果提交使用了900秒身份核验临时凭据,凭据没有写进源码仓库。提交接口返回成功后,我又打开成长中心积分明细,确认2026年10月22日08:38“完成沙箱部署”增加1000分。接口提交成功和积分到账分别核对,可以避免因为页面更新延迟而重复提交。
本次免费体验环境显示的有效时长为3小时,公网预览随环境到期失效。源码已经推送到公开仓库,可按上面的命令重新运行。这次没有购买ECS,也没有完成ECS持久化部署。
源码仓库:https://gitcode.com/qq_19172529/cloud-grid-2048
作品详情:https://gallery.developer.huaweicloud.com/gallery/00699df652c00000
活动入口:https://open.huaweicloud.com/openplatform/activity/
- 点赞
- 收藏
- 关注作者
评论(0)