Javascript 拼接功能无法正常工作
Javascript splice function not working correctly
这里是相对较新的程序员。我有一个用 Javascript 编写的功能齐全的俄罗斯方块游戏。我在使用最终功能时遇到问题 - 拼接在删除填充颜色的行时未按预期工作。我确定我循环遍历数组的方式可能有问题,但我无法解决,如果有人可以提供一些建议,我正在徘徊。这是我当前的函数,每次形状与另一个形状碰撞时都会调用该函数:
for(let y = arena.length-1; y < 0; y--){
for(let x = 0; x < arena[y].length; x++){
if (arena[y][x] === 0) {
continue;
}
}
const row = arena.splice(y,1)[0].fill(0);
arena.unshift(row);
y++;
};
}
已为您修复。你有几个概念是错误的:
function arenaSweep() {
for(let y = arena.length-1; y >= 0; y--){
const row = arena[y];
let filled = true;
for(let x = 0; x < row.length; x++){
if (row[x] === 0) {
filled = false;
break;
}
}
if (filled) {
arena.splice(y,1);
row.fill(0);
arena.unshift(row);
y++;
}
};
}
您的 for 循环中的条件对于反向循环有错误的方向(y < 0 应该是 y >= 0)。
接下来您假设 continue
会跳出内部循环,这样您就可以开始检查下一行;但是,中断会停止当前循环。继续只是让你移动到嵌套循环的下一个迭代。
我还通过减少数组调用进行了一些优化。
这里是相对较新的程序员。我有一个用 Javascript 编写的功能齐全的俄罗斯方块游戏。我在使用最终功能时遇到问题 - 拼接在删除填充颜色的行时未按预期工作。我确定我循环遍历数组的方式可能有问题,但我无法解决,如果有人可以提供一些建议,我正在徘徊。这是我当前的函数,每次形状与另一个形状碰撞时都会调用该函数:
for(let y = arena.length-1; y < 0; y--){
for(let x = 0; x < arena[y].length; x++){
if (arena[y][x] === 0) {
continue;
}
}
const row = arena.splice(y,1)[0].fill(0);
arena.unshift(row);
y++;
};
}
已为您修复。你有几个概念是错误的:
function arenaSweep() {
for(let y = arena.length-1; y >= 0; y--){
const row = arena[y];
let filled = true;
for(let x = 0; x < row.length; x++){
if (row[x] === 0) {
filled = false;
break;
}
}
if (filled) {
arena.splice(y,1);
row.fill(0);
arena.unshift(row);
y++;
}
};
}
您的 for 循环中的条件对于反向循环有错误的方向(y < 0 应该是 y >= 0)。
接下来您假设 continue
会跳出内部循环,这样您就可以开始检查下一行;但是,中断会停止当前循环。继续只是让你移动到嵌套循环的下一个迭代。
我还通过减少数组调用进行了一些优化。