首页 > 解决方案 > 如何存储 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();
}

标签: javascriptarrays2048

解决方案


问题是您没有修改row函数作为参数接收的 。相反,您创建一个新数组,然后将其返回。但是随后调用者不处理返回值。

代替:

for (let i = 0; i < 4; i++) {
    slide(grid[i])
}

做:

for (let i = 0; i < 4; i++) {
    grid[i] = slide(grid[i])
}

现在您的网格实际上将与slide函数的作用保持同步。


推荐阅读