为了账号安全,请及时绑定邮箱和手机立即绑定

单击俄罗斯方块,课程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)http://img1.sycdn.imooc.com//5a5c8a81000122a907900722.jpg

正在回答

3 回答

 for(var j=0; j<gameData[i].length; j++) {

   i改为0

0 回复 有任何疑惑可以回复我~

数组深拷贝

0 回复 有任何疑惑可以回复我~

题目是“单机俄罗斯方块,课程2-7……”

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

单击俄罗斯方块,课程2-7 消行函数出现显示异常

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信