我们必须为一个学校项目编写康威生命游戏的 JavaScript 版本,但我们被困在循环边缘。整个事情工作正常,但计算邻居数量的函数不适用于边缘上的单元格(因为它必须评估数组之外的值,这些值是未定义的)。我们尝试了几个选项,但它们都改变了程序其余部分的功能。
我们应该添加什么让它在网格边缘工作?
var totalNeighbors = function(x, y) {
var total = 0;
if (x > 0 && cells[(x - 1)][y] == 1) {
total++;
}
if (x < (width - 1) && cells[x + 1][y] == 1) {
total++;
}
if (y > 0 && cells[x][y - 1] == 1) {
total++;
}
if (y < (height - 1) && cells[x][y + 1] == 1) {
total++;
}
if (y > 0 && x > 0 && cells[x - 1][y - 1] == 1) {
total++;
}
if (y > 0 && x < (width - 1) && cells[x + 1][y - 1] == 1) {
total++;
}
if (y < (height - 1) && x > 0 && cells[x - 1][y + 1] == 1) {
total++;
}
if (y < (height - 1) && x < (width - 1) && cells[x + 1][y + 1] == 1) {
total++;
}
return total;
};
谢谢!