Я пытаюсь перебрать 2D-массив, который служит игровым полем.Мне нужно пройтись по каждому элементу [x] [y] в 2D-массиве, а затем просмотреть все соседние ячейки и определить, содержат ли они 1 или 0. Я создаю приложение John Conway Game of Life и мне нужно определитьсколько существует «живых» (соседних ячеек в двумерном массиве, которые содержат 1).
Когда я использовал вложенные циклы for, чтобы перебрать двумерный массив и попытаться сравнить текущую ячейку с ее соседями, которые я запускаюв неопределенную ошибку.
for(let x = 0; x < this.state.boardHeight; x++) {
for(let y = 0; y < this.state.boardWidth; y++) {
let neighborCount = 0;
// Game of Life logic pertaining to squares being alive/dead
neighborCount += oldBoard[x - 1][y - 1];
neighborCount += oldBoard[x][y - 1];
neighborCount += oldBoard[x + 1][y - 1];
neighborCount += oldBoard[x - 1][y];
neighborCount += oldBoard[x + 1][y];
neighborCount += oldBoard[x - 1][y + 1];
neighborCount += oldBoard[x][y + 1];
neighborCount += oldBoard[x + 1][y + 1];
console.log('neighborCount ' + neighborCount[x]);
// If square has 2 live neighbors it stays alive
if(neighborCount == 2) {
newBoard[x][y] = oldBoard[x][y];
}
// If square has exactly 3 neighbors a new life square is born
else if (neighborCount == 3) {
newBoard[x][y] = 1;
}
// Is square has more than 3 live neighbors it dies
else if(neighborCount > 3){
newBoard[x][y] = 0;
}
}
}
Все neighborCount += oldBoard[x][y]
строки кода возвращены неопределенными.В чем проблема с тем, как я повторяю и сравниваю?
Cannot read property '-1' of undefined
App._this.componentDidUpdate
/src/App.js:93:43
90 | for(let y = 0; y < this.state.boardWidth; y++) {
91 | let neighborCount = 0;
92 | // Game of Life logic pertaining to squares being alive/dead
> 93 | neighborCount += oldBoard[x - 1][y - 1];
| ^
94 | neighborCount += oldBoard[x][y - 1];
95 | neighborCount += oldBoard[x + 1][y - 1];
96 | neighborCount += oldBoard[x - 1][y];
Это ошибка, которую я получаю. Вот кодовый ящик со всей программой.