如何存储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函数所做的保持同步。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...