所以我有这个功能,它是创建康威生命游戏项目的一部分 里面有一个计算邻居的函数,但它不起作用
这是我编写的代码
function countNeighbours(grid, x, y){
let count = 0;
for (let i = - 1; i < 1; i++){
for (let j = - 1; j < 1; i++){
count += grid[x + i][y + j]
}
}
count -= grid[x][y];
return count;
}
但它返回 grid[x + i] 未定义,为什么?
问题在于两个
for
循环的循环条件。目前,您将 i
和 j
初始化为 -1,但只要 i
或 j
小于 1,循环条件就会继续。这意味着循环仅在 i
时迭代。或 j
为 -1,且不覆盖所有相邻小区。
您需要调整循环条件以覆盖
i
和 j
的 -1 到 1(含)范围。这是更正后的代码:
function countNeighbours(grid, x, y) {
let count = 0;
for (let i = -1; i <= 1; i++) { // Loop over rows
for (let j = -1; j <= 1; j++) { // Loop over columns
// Skip counting the cell itself
if (i === 0 && j === 0) continue;
// Check if the neighboring cell is within the grid bounds
if (x + i >= 0 && x + i < grid.length && y + j >= 0 && y + j < grid[0].length) {
count += grid[x + i][y + j];
}
}
}
return count;
}
在此更正后的代码中:
i
和j
都从-1到1循环,覆盖所有相邻单元格。