单文件2048沙箱实践:合并规则测试与公网访问核验

举报
yd_294623562 发表于 2026/10/22 09:39:20 2026/10/22
【摘要】 记录云上方格2048的实际开发与部署过程:用12项断言检查合并规则,在华为云免费体验环境运行静态服务,再通过公网访问、内容校验和积分明细确认结果。源码公开,预览有时限。

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/

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。