单文件2048实践:合并规则、触屏操作和静态部署验收
本文由AI协助开发与整理,基于本次2048项目的实际源码说明。
2048:合并每一种可能
这是一个纯单文件 HTML 小游戏。页面、样式和游戏逻辑都在 index.html 中,无需 npm、Vite、账号或后端。项目由 AI 协作编写,用于练习前端游戏逻辑和华为云静态站点部署。
运行与操作
下载 index.html 后,可以直接用浏览器打开。也可以在所在目录运行 python3 -m http.server 18080,再访问 http://127.0.0.1:18080。本地服务只适合开发预览;要供他人访问,需要另行部署。
电脑使用方向键,手机在棋盘内滑动,也可以点击页面上的方向按钮。点击“新游戏”可以重新开始。合成 2048 后会出现获胜提示,选择“继续挑战”可以继续合并更大的数字。
游戏规则与实现
棋盘使用长度为 16 的数组表示。每次操作按方向提取四行或四列,把非零数字压紧,相邻相同数字从移动方向开始合并一次,再补零。例如 [2,2,2,2] 向左移动得到 [4,4,0,0],该步得分增加 8;不会在同一次移动中继续合成 8。
只有棋盘实际变化时,程序才生成一个新数字。空格位置随机选择,新数字以 90% 概率为 2、10% 概率为 4。没有空格且横向、纵向都不存在相邻相同数字时,游戏结束。分数等于每次合并得到的新数字之和。
CSS Grid 负责绘制 4×4 网格,尺寸随屏幕宽度变化。键盘和 Pointer Events 共用同一个移动入口,避免两套操作逻辑产生规则差异。滑动距离不足 24 像素时不会触发移动,以减少误触。页面也支持减少动态效果的系统偏好,并提供方向按钮、棋盘描述和分数状态提示。
状态保存与边界
当前棋盘、分数和最佳成绩保存到浏览器的 localStorage,刷新后尝试恢复。恢复前检查数组长度、数字范围和分数;存储不可用时,游戏仍可在当前页面运行。存档属于当前浏览器和站点来源,更换域名、清空站点数据或更换浏览器不会自动同步。
游戏没有登录、排行榜、联网同步和支付功能,也不会请求外部脚本、字体或统计服务。棋盘中的随机数用于休闲游戏,不用于任何安全或支付场景。
部署实践
作为静态页面,可以放在 Nginx 站点目录中。部署时应同时核查源文件、服务状态和实际访问路径:本机可读不代表公网可读,服务首页返回成功也不代表子目录中的游戏文件正确。完成临时实践后,需释放本次创建的实例、磁盘、公网 IP 和网络资源;停止实例并不等于全部释放。
本仓库保存可独立运行的源码。活动期间的临时访问地址可能已经清理,仓库本身不承诺长期托管在线游戏。
验收建议
检查连续相同数字只能合并一次、无效方向不生成新数字、分数随合并增加、四个方向行为一致,以及有空格和无空格时的结束判定。再分别检查窄屏滑动、方向按钮、刷新恢复和重新开始,才能覆盖主要使用流程。
- 点赞
- 收藏
- 关注作者
评论(0)