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

来源:2-7 方块固定、消行、游戏结束判定

风之承

2018-01-15 19:04

课程链接: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://img3.mukewang.com/5a5c8a81000122a907900722.jpg

写回答 关注

3回答

  • 慕虎4297296
    2018-05-13 17:24:35

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

       i改为0

  • 丶画诗
    2018-02-04 19:36:32

    数组深拷贝

  • 风之承
    2018-01-15 19:07:49

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

基于websocket的火拼俄罗斯(单机版)

前端大牛带你实现单机版俄罗斯方块!

31677 学习 · 106 问题

查看课程

相似问题