Небольшие заметки о том, как устроен мой проект "Искусственная жизнь".
Сегодня рассмотрим условные переходы.
Некоторые команды, такие как "посмотреть", "сделать шаг", "съесть", "поделиться" являются разветвителями. В зависимости от того, что было в клетке, на которое было направленно действие, дальнейшее выполнение кода пойдет по разным веткам.
Рассмотрим пример (смотри рисунок).
-----------------------------—
Указатель текущей команды (УТК) равен 7. Берём число из ячейки №7. Это 26, команда шагнуть. Берём число из следующей ячейки (УТК+1), это параметр, из него вычисляем направление для шага.
------------------------------—
Если клетка была пуста, то берется число по адресу УТК+2.
Там у нас число 0. Это число прибавляется к УТК.
7+0=7. То есть УТК опять указывает на ячеёку №7. Бот будет двигаться в этом направлении, пока на пути не встретит препятствие.
-----------------------------—
Если на клетке была стена, то берется число по адресу УТК+3.
Там у нас число 20. Это числ