Проблема с удалением линии JS Tetris

Я изучаю JavaScript, и для этого я хотел сделать игру Tetris. До сих пор у меня было много функций, но я застрял в проблеме clearRow() (очистить строку).

Мой код работает следующим образом. Я проверяю каждую строку двумерного массива gameBoardSquared. Если все блоки подряд имеют синий цвет, эту строку следует удалить.

Вот мой код:

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()), но не только для удаления одного тетромино.

редактировать: я перебираю столбцы корыта, так как вся игровая доска сделана на холсте. Там оси перевернуты.


person Aaron Erdwyn    schedule 17.04.2020    source источник
comment
похоже, вы путаете строки и ячейки. gameBoardSquared.every(k и for(var rows = 0; rows < gameBoardSquared.length; rows++){, кажется, перебирают строки, когда они должны быть столбцами   -  person klugjo    schedule 17.04.2020
comment
О, теперь я знаю, что ты имеешь в виду. Я хотел снова перебрать строки, чтобы поймать все заполненные и удалить их. Это просто то, что осталось от меня, когда я пытался найти решение.   -  person Aaron Erdwyn    schedule 17.04.2020


Ответы (1)


Понятно!

Спасибо ТАКОЕ за мотивацию :-).

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));
            }
        }
    }
}
person Aaron Erdwyn    schedule 17.04.2020