javascript - 如何存储 2048 游戏的数字
问题描述
我一直在尝试实现游戏 2048。
我可以在网格的随机位置添加数字,也可以将它们滑到一边,因为这就是console.log
向我展示的内容。
但不知何故,我无法保持幻灯片的效果。每当我key
再次调用时,这些行就像以前的幻灯片没有效果一样。
function slide(row) {
arr = row.filter(e => e);
let missing = 4 - arr.length;
let zeros = Array(missing).fill(0);
arr = arr.concat(zeros);
console.log(arr);
return arr;
}
function key() {
for (let i = 0; i < 4; i++) {
slide(grid[i]);
}
addNumber();
}
解决方案
问题是您没有修改row
函数作为参数接收的 。相反,您创建一个新数组,然后将其返回。但是随后调用者不处理返回值。
代替:
for (let i = 0; i < 4; i++) {
slide(grid[i])
}
做:
for (let i = 0; i < 4; i++) {
grid[i] = slide(grid[i])
}
现在您的网格实际上将与slide
函数的作用保持同步。
推荐阅读
- javascript - 创建一个“去网站的随机页面功能”
- ruby-on-rails - 当我通过 Ctrl+Z 停止 Rails 服务器时,之后需要进行繁琐的工作才能启动并运行它。可以有一个脚本来为我解决这个问题吗?
- reactjs - 是否可以将 AWS Amplify Storage 中的内容直接下载到浏览器中?
- php - SQL 每月更新一次行
- c# - IDM 如何知道谷歌驱动器文件大小?
- java - 为什么接口类型被认为与重载完全不同?
- arrays - Fortran 错误:/var/folders/df/btj2wstn58xf0yrmq9n65ybc0000gn/T//ccLHoofN.s:12187:2:错误:重定位中不支持的符号修饰符
- reactjs - 从 Firebase 中删除组件后更新组件
- xml - 从环境变量导出 XML 中的值
- c++ - C++ 中的双重隐式转换