如何存储 2048 游戏的数字

How to store the numbers for the 2048 game

我一直在尝试实现 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。相反,您创建了一个新数组,您 return。但是调用者不会处理 return 值。

而不是:

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

做:

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

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