Arti-Jack
@Arti-Jack

Ошибка forEach в тетрисе. Как исправить?

Доброго времени суток всем.

Решил изучать JS посредством написания тетриса. Костяк нашёл в интернете и начал дописывать всё остальное сам.

Проблема в том, что все фигуры, кроме красной, при нажатии на клавишу вверх (перевернуть фигуру) начинают ломать веб-приложение. Не понимаю в чём дело, но вот что пишет консоль:
Uncaught TypeError: Cannot read property 'forEach' of undefined
    at drawMatrix (index.html:32)
    at draw (index.html:28)
    at update (index.html:117)


И вот отрывок этого кода, где происходит ошибка:
function drawMatrix(matrix, offset) {
	matrix.forEach((row, y) => { // ERROR!
		row.forEach((value, x) => {
			if (value !== 0) {
				if (type === 1) {
					context.fillStyle = "green";
					context.fillRect(x + offset.x, y + offset.y, 1, 1);
				} else if (type === 2) {
					context.fillStyle = "blue";
					context.fillRect(x + offset.x, y + offset.y, 1, 1);
				} else if (type === 3) {
					context.fillStyle = "yellow";
					context.fillRect(x + offset.x, y + offset.y, 1, 1);
				} else if (type === 4) {
					context.fillStyle = "red";
					context.fillRect(x + offset.x, y + offset.y, 1, 1);
				} 
			}
		});
	});
}


Ну а весь код я решил скопировать в Online IDE. Там в принципе весь код есть, можно самому запустить и проверить это.

P.S: Я новичок в JS, так что надеюсь на ваше понимание.
  • Вопрос задан
  • 463 просмотра
Решения вопроса 1
У тебя getMatrix возвращает пустоту(undefined), потому что там стоит условия только для типа 4, пропиши условия для всех типов

function getMatrix(arg, type) {
   if (type === 4) {
                  ....
  }
  };
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы