如何存储 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
函数的功能保持同步。
我一直在尝试实现 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
函数的功能保持同步。