У меня возникли проблемы с выяснением того, как обращаться с обертыванием краевых дел 2-мерного массива назад, чтобы число за границей обернулось на противоположный край сетки.Обертывание по краям в 2-м массиве (игра жизни)?
Это мой текущий код, он работает несколько, но я заметил, что он фактически не обертывает вокруг сетки.
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
}
},
Что я здесь делаю неправильно?
Где константа '10' приходит? – hobbs
Если бы не этот странный 10, обертка могла бы быть «return ((x-min)% (max-min)) + min', что становится еще проще, если вы даете' min' всегда быть 0. – hobbs
10 - размер сетки или ширина ячейки. Я буду менять его по отношению к размеру ячейки позже, но теперь мне легче думать в константах. как в 10 будет изменен на cell.width позже, если это ясно? – AndyB