单击俄罗斯方块,课程2-7 消行函数出现显示异常
课程链接:https://www.imooc.com/video/15604
代码如下:
for(var i=gameData.length-1; i>=0; i--) {
// 创建标志位
var clear = true;
// 检查该行是否符合条件——存在数据不为1、clear为false
for(var j=0; j<gameData[i].length; j++) {
if(gameData[i][j] != 1) {
clear = false;
break; // 结束该内循环,进入下一个内循环或者结束
}
}
// 经历上面步骤,需要消除该行:上面每一行下移,第一行置0;i++
if(clear) {
for(var m=i; m>0;m--) {
gameData[m] = gameData[m-1]; // 引起异常代码
// for(var n=0; n<gameData[m].length; n++) {
// gameData[m][n] = gameData[m-1][n];
// }
}
// 第一行置0
for(var n=0; n<gameData[0].length; n++) {
gameData[0][n] = 0;
}
i++
}
}
(1)中间加粗倾斜代码引起异常,异常代码下面的注释代码为可替换的正常代码
(2)只有产生一次消行操作后,才会出现下面截图的显示异常:方块重影、没有及时消除
(2)