Как реализовать клеточный автомат «Бегающие сигналы»?
Для игры нужно реализовать логику.
В одномерное пространство заталкиваются справа шарики. С неким интервалом (например, секунда) они двигаются влево до тех пор пока не стукнутся о границу пространства или о другой шарик, и тогда меняют направление движения.
Условия:
Одномерное пространство - это массив js фиксированной длинны.
Шарики - это единички
Реализовал при помощи клеточного автомата (с окрестностью фон Неймана порядка 1), и в самом конце столкнулся с проблемой, когда два шарика двигаются навстречу и встают на одно и то же место (при этом один шарик пропадает).
Лобовое решение это не использовать клеточный автомат, и с помощью .indexOf двигать единички и двоечки по очереди, но я бы не хотел так реализовывать, а иначе решить, ума не хватает на данный момент.
А в чем проблема? У каждого шарика есть атрибут - скорость (направление). Заведи еще один атрибут - "столкновение". Все точки двигаются в целочисленном пространстве, так что больше ничего не надо. При перемещении шариков - смотришь, занята клетка или нет. Если занята - ставишь обоим точкам атрибут "столкновение". если нужно двинуть шарик с атрибутом "столкновение" меняй направление, снимай атрибут и двигай шарик. Насколько это впишется в твой автомат - смотри сам, не нужно увлекаться готовыми схемами
о другой шарик, и тогда меняют направление движения
двигаются навстречу и встают на одно и то же место
Это две противоречащих фразы. Так всё-таки они отталкиваются или проходят сквозь друг друга?
И как вообще можно пропустить строку if(cells[this.position+this.direction]==1)?