@tonylos

Как реализовать клеточный автомат «Бегающие сигналы»?

Для игры нужно реализовать логику.

В одномерное пространство заталкиваются справа шарики. С неким интервалом (например, секунда) они двигаются влево до тех пор пока не стукнутся о границу пространства или о другой шарик, и тогда меняют направление движения.

Условия:
Одномерное пространство - это массив js фиксированной длинны.
Шарики - это единички

Реализовал при помощи клеточного автомата (с окрестностью фон Неймана порядка 1), и в самом конце столкнулся с проблемой, когда два шарика двигаются навстречу и встают на одно и то же место (при этом один шарик пропадает).
Лобовое решение это не использовать клеточный автомат, и с помощью .indexOf двигать единички и двоечки по очереди, но я бы не хотел так реализовывать, а иначе решить, ума не хватает на данный момент.

Прошу помощи.
  • Вопрос задан
  • 184 просмотра
Пригласить эксперта
Ответы на вопрос 2
@ksnk
А в чем проблема? У каждого шарика есть атрибут - скорость (направление). Заведи еще один атрибут - "столкновение". Все точки двигаются в целочисленном пространстве, так что больше ничего не надо. При перемещении шариков - смотришь, занята клетка или нет. Если занята - ставишь обоим точкам атрибут "столкновение". если нужно двинуть шарик с атрибутом "столкновение" меняй направление, снимай атрибут и двигай шарик. Насколько это впишется в твой автомат - смотри сам, не нужно увлекаться готовыми схемами
Ответ написан
Комментировать
Griboks
@Griboks
о другой шарик, и тогда меняют направление движения

двигаются навстречу и встают на одно и то же место

Это две противоречащих фразы. Так всё-таки они отталкиваются или проходят сквозь друг друга?
И как вообще можно пропустить строку if(cells[this.position+this.direction]==1)?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы