【问题标题】:JS Tetris deleting line issueJS俄罗斯方块删除线问题
【发布时间】:2020-04-18 04:14:50
【问题描述】:

我正在学习 JavaScript,为此我想制作一个俄罗斯方块游戏。 到现在为止,我得到了很多功能,但被 clearRow() (clear line)问题卡住了。

我的代码工作如下。我检查了 gameBoardSquared 2D 数组的每一行。如果一行中的所有块都是蓝色的,则应删除该行。

这是我的代码:

function clearRow(){

for(var rows = 0; rows < gameBoardSquared.length; rows++){
    var isFullLine = false;
    if(gameBoardSquared.every(k => k[rows].squareColor == "blue")){
        isFullLine = true;
        console.log("fds");
    }
    if(isFullLine){
        //here I would like to iterate trough all the elements, that are true in the upper if statement (if(gameBoardSquared.every...)
        }
      }
    }
}

但不是这个。 如果我可以将 .splice 插入到 if(arr.every()) 条件中,我将不胜感激,而不是只删除一个 tetromino。

编辑: 我正在迭代槽列,因为整个游戏板是在画布上制作的。那里的轴被还原了。

【问题讨论】:

  • 看起来您混淆了行和单元格。 gameBoardSquared.every(k for(var rows = 0; rows &lt; gameBoardSquared.length; rows++){ 似乎在应该是列时遍历行
  • 哦,我现在知道你的意思了。我想再次遍历行以捕获所有填充的行并删除它们。这只是我在尝试寻找解决方案时留下的东西。

标签: javascript arrays multidimensional-array tetris


【解决方案1】:

知道了!

感谢 SO 的鼓励 :-)。

function clearRow(){
    for(var rows = 0; rows < gameBoardSquared.length; rows++){
        while(gameBoardSquared.every(k => k[rows].squareColor == "blue")){
            for(var i = 0; i < gameBoardSquared.length; i++){
                console.log(gameBoardSquared[i].splice(rows, 1));
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    相关资源
    最近更新 更多