用 AI 开发者空间发布一个单文件 2048:从合并规则到公网验证

举报
yd_272823509 发表于 2026/10/24 00:17:43 2026/10/24
【摘要】 一次小型网页应用实践:使用华为云 AI 开发者空间和 HuaweiCloud DevKit,生成纯 HTML/CSS/JavaScript 的 2048 游戏,在沙箱中部署并取得公网访问地址。本文记录单文件方案、合并逻辑、触屏输入与上线核验,也说明临时沙箱的适用边界。

为什么先做成单文件

这次目标是完成一个可以直接打开和分享的 2048 网页游戏。我把范围限制为一个 index.html:样式与脚本全部内联,不引入 npm 包,也不使用 Vite 等构建工具。对于这样的小型应用,这能减少构建与上传环节,出现问题时也容易判断是页面代码、静态服务还是访问链路出了问题。

最终页面包含 4×4 棋盘、方向键与 WASD 操作、手机滑动、合并计分、最高分记录、重新开始,以及胜利和无路可走时的提示。最高分写入浏览器 localStorage,没有用户登录或云端排行榜。

把一个方向的规则写清楚

代码用二维数组保存棋盘,空格记为 0。核心思路是先实现向左移动:去掉 0、按相邻数值合并、在行尾补 0。其余方向通过反转和转置,转换为相同的行处理。

例如,向左移动时:

[2, 0, 2, 4] → [4, 4, 0, 0]
[2, 2, 2, 2] → [4, 4, 0, 0]

第二个例子很适合检查“一次移动中,新合并的数字不能再次参与合并”这一规则。若错误地算成 [8, 0, 0, 0],游戏就改变了原本的玩法。

本次代码的行处理函数如下:

function sr(row) {
  const values = row.filter(value => value);
  let gained = 0;
  for (let i = 0; i < values.length; i++) {
    if (i + 1 < values.length && values[i] === values[i + 1]) {
      values[i] *= 2;
      gained += values[i];
      values.splice(i + 1, 1);
    }
  }
  while (values.length < 4) values.push(0);
  return { row: values, gained };
}

这段摘录保留了实际实现的处理方法,变量名作了展开,便于阅读。只有棋盘确实改变,才计入本次合并得分并随机生成新方块,避免无效按键也不断增加数字。

PC 与手机共用移动入口

键盘事件把方向键和 WASD 映射为四个方向。触屏事件记录滑动起点与终点,比较水平、垂直距离,以位移较大的轴判断方向;小于 20 像素的移动被忽略,减少轻触造成的误操作。两种输入最终都调用同一个移动函数,因此无需维护两套游戏规则。

棋盘使用正方形容器,方块尺寸根据可用宽度计算。窗口尺寸变化时重新绘制。当前页面还禁止了浏览器缩放;这让演示中的手势行为更直接,但有可访问性上的取舍,若继续完善,应该优先恢复缩放能力并缩小手势拦截范围。

在沙箱发布,再检查真实页面

开发过程使用华为云 AI 开发者空间中的 AI Shell 与 HuaweiCloud DevKit。生成单文件后,在免费体验环境启动静态服务,再通过 DevBridge 取得公网访问地址。代码与部署过程使用 AI 辅助完成,以下核验结果来自实际操作。

这几个阶段需要分开判断:文件上传成功,不代表静态服务已经启动;本地端口能访问,也不代表公网地址已经可用。发布后的基础检查可以使用:

curl -sI 'https://<实际分配的沙箱域名>/'

这里的域名只是占位符,必须替换成平台真实返回的地址。HTTP 成功状态只能说明对应请求可达,还要打开页面检查棋盘、按钮与游戏内容,避免把网关提示页当成应用。

本次已经完成沙箱部署并得到可公开访问的游戏页面,页面代码也已保留为独立 HTML 文件。华为云活动的沙箱部署里程碑已成功提交,成长中心实际增加 100 积分。这是本次观察到的到账结果,不代表其他时间或其他活动的固定奖励。

这次完成了什么,还有哪些边界

本次实践完成的是浏览器端单文件游戏与沙箱发布,没有部署 ECS,也没有建立数据库、云端账户或多人联机服务。代码中实现了键盘与触屏输入,但没有做完整的浏览器兼容性和无障碍测试,不能把“已发布”视作所有终端都已验证。

沙箱访问地址适合演示与学习,能否长期访问取决于运行环境和访问链路的存续状态。保存 HTML 源文件,比只留下一个链接更可靠。后续若确有长期托管需求,再评估静态托管或持久化资源的成本与维护方式。

对我而言,这个小项目最有用的收获,是把 AI 生成、规则检查、部署和公网核验串成了一个可追踪的过程。先把规则写小、把交付物做轻,再逐层验证访问路径,小型网页应用也能完成一次真实的上线实践。

参考入口

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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