Эффективный способ проверить все точки вокруг данной точки - PullRequest
1 голос
/ 29 мая 2011

Эй, я недавно написал эту довольно простую игру о жизни на JavaScript.

В этом скрипте я проверяю все ячейки вокруг данной ячейки, в настоящее время я делаю это с помощью восьми операторов if.

Работает, но чувствует себя неправильно и жестко закодировано. Будет ли более быстрый и эффективный способ сделать это? Или массы утверждений if - единственный путь?

Ответы [ 3 ]

2 голосов
/ 29 мая 2011

Как насчет создания массива смещений и циклического перемещения по массиву?

var offsets = [{dx:1,dy:1},{dx:0,dy:1}, ...
0 голосов
/ 02 июня 2011

вы можете создать справочную таблицу, которая обновляется через несколько шагов, что ускоряет вычисления

0 голосов
/ 29 мая 2011

Вы можете оптимизировать это, например, вместо того, чтобы проверять, если x> 0 много раз, поместить только одну обертку в другую, если

if(x > 0) {
    if(cells[x - 1][y]) 
        alive++;

    if(y > 0 && cells[x - 1][y - 1])
        alive++;

    if(y < edgeAmount && cells[x - 1][y + 1]) 
        alive++;
}
...