Перейти к содержимому

Переменные соседа

Ячейка для обмена нужна не всегда — но за короткий путь платят тем, что переменная меняется без следа в программе

Читать переменную соседа уже умеем. write работает в ту же сторону: адресом служит имя переменной, и значение кладётся прямо в неё.

write 1 processor1 "нужен"
тик 0
Ввод0
Ждать1
@counter0number

Нижний процессор — тот, чья программа показана — раз в секунду ставит верхнему нужен в единицу. Верхний ждёт этого признака, делает работу и сам же сбрасывает его обратно в ноль. Ячейки между ними нет.

Можно Нельзя
записать в существующую переменную соседа завести соседу новую переменную
положить в неё число или объект переписать константу: @pi, @copper и прочие
писать себе через @this писать в мировой процессор обычным

Новая переменная не заводится молча: если имя написано с опечаткой, запись просто не происходит. У соседа нужен, а мы пишем в нужeн с латинской e — и ничего не будет ни у кого.

Исключение — короткая команда, как в примере: один процессор поднимает признак, второй его видит и сам же гасит. Работает это потому, что владелец переменной остаётся хозяином: он решает, когда признак снять, а посторонний умеет только поднять.

Переменная соседа Ячейка
нужен блок на карте нет да
переживает правку программы нет да
видна третьему процессору только через того же соседа всем, кто подключён
сколько значений сколько переменных 64 или 512

Главная разница — вторая строка: правка программы обнуляет переменные, и сосед в ту же секунду начнёт читать нули. Для признака «сделай сейчас» это неважно, для накопленных данных — решает всё.

Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.