在二维阵列中缠绕边缘(生命游戏)?

时间:2014-12-31 13:30:41

标签: javascript multidimensional-array conways-game-of-life

我无法弄清楚如何处理绕回2d数组的边缘情况,以便超出界限的数字将环绕到网格的相对边缘。

这是我目前的代码,它有点工作,但我注意到它实际上并没有正确地包裹网格。

wrap: function (x, min, max){ 
    if (x < min) {
        return max + x
    } 
    else if (x === min) {
        return max - 10
    }
    else if (x > max) {
        return min + 10
    } else if (x <= max){
        return max % x 
    }
    // return x < 0 ? max + x : min
},



get_neighbour:function(x, y) {
    if (g.grid[x] && g.grid[x][y]){
        return g.grid[x][y].state
    } else {
        (g.grid[x]) ? x = x : x = g.func.wrap(x, 0, 500) ;
        (g.grid[y]) ? y = y : y = g.func.wrap(y, 0, 500) ;
        return g.grid[x][y].state
    }
},

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

您的wrap功能不完整。它处理x小于0时的情况,但当x不小于0时,它总是返回min。此时,有两种情况:x小于或等于max,或x大于max,您需要处理它们。如果你使用ifelse if而不是?:运算符,它可能会更简单 - 代码肯定会更具可读性,并且更容易发现错误。

(此外,上面的代码min始终为0,但原则上您应该检查x是否小于min而不是0。)