Pull to refresh

Comments 24

Добавьте возможность кликая по клетке, изменять ее цвет.
А в какой цвет? (хотя по факту сейчас учитывается только клетка окрашена, клетка не окрашена)
Как выкрою время, обязательно добавлю такую возможность
Вот интересно, а как будет себя вести этот муравей на треугольном и гексагональном поле? А в трех- и многомерных пространствах?
ну для 3д пространства нужно вводить правила смены z уровня, а в плоскости можно строить любые эксперименты.
Надо будет тоже попробовать сделать такой вариант, а в js можно сделать это просто через передачу функции валидатора нахождения на игровом поле муравья, только для этого нужно будет все в виде модулей переписать, а не огромной лапши
А что за алгоритм? Я на досуге делал «жизнь» на JS, так она работает на порядок быстрей: осторожно, рекламная ссылка :-). Мне казалось, что между муравьём и жизнью принципиальной разницы нет. Или я ошибаюсь?
В начале поста ссылка на алгоритм.
wiki
Это понятно :-) Я про реализацию. Такое чувство, что вы каждый раз всё поле оббегаете… может не один раз… я про это говорю.
нет, расчёт идёт по отдельным таймерам и только текущая клетка для каждой популяции
Ё-моё :-) Я осознал! Это не тормоза, это просто таймеры :-)
Таймеры с 0 интервалом,
setInterval(function () { }, 0);
жаль только setTimeout тут не катит, он был бы побыстрее, но слишком быстро падает с перполнением стека
А я на досуге решил посмотреть, что будет если в пространстве для «жизни» будут случайные глюки «вакуума» с заданной вероятностью — тоже на canvas: allter.github.io/misc/life_canvas.html Если кому интересно — можете заглянуть внутрь и посмотреть, как сделано ускорение просчётов (при задержке 0), что бы считалось быстрее обновлений графики.
Крутая идея про вакуум
Тоже надо тоже реализовать расчет быстрее графики, иначе оч долго идет развитие, хотя смотреть на него весьма залипательно
Поймал с первого раза это поведение. Вот он, оставшийся пиксель в розовом поле
Image #2225219, 118.4 KB
После просмотра кода у меня появилось предложение по его улучшению — 5 раз записан один и тот же код, различие лишь в индексах у используемых массивах. Кажется, достаточно лишь передать в функции таймера индекс и цвет, чтобы скрипт сократился в более чем 4 раза.
Изначально была написана 1 функция с параметром индекс, но так по какой то причине работать не захотело
Странно, что я делал не так в самом начале :)
В коде то осталась начальная функция mur
Сейчас обновил на такой подход
Вы наверно вызывали как то так
for (i=1; i <= 4; i++) {
    setInterval(mur(i), 10);
}

но функция с динамическими параметрами в setInterval нужно запихивать как нечто
setInterval(funcWithParams, delay, [dynamicParam1, ...dynamicParamN]);

и тогда ваш пример заработает вот так
for (i=1; i <= 4; i++) {
    setInterval(mur, 10, i);
}

Не заглянул в док и делал наоборот
setInterval(mur, i, 0);
Думается мне, что просто когда муравей входит в точку выхода другого муравья, он начинает повторять все движения предшественника задом на перёд. Ведь поведение муравьёв вполне инвертируемо. Вот и выходит, что если в любой момент муравья развернуть строго на 180 градусов, то он начнёт всё стирать как на обратной перемотке, пока не наткнётся на работу другого муравья.
Не уверен, понятно ли объяснил. Если что, спрашивайте.
Вполне возможно так и есть
Если оставить одного муравья, и сделать кнопку «Развернуть на 180 градусов», то это очень легко можно проверить.
Sign up to leave a comment.

Articles