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

Пауза в секундах

Подождать столько-то секунд — и не потратить на ожидание ни одной инструкции

простоНужно знать: Как работает процессор, Циклы

У wait одно поле — сколько секунд ждать. Дробные числа можно: wait 0.1 это шесть тиков, wait 2.5 — полторы сотни.

тик 0
Операция0
=
Ждать1
@counter0number
итерацийnullnull

Нажмите «пуск» и посмотрите на итераций: единица в секунду, а не сотня. Программа делает своё дело раз в секунду и всё остальное время молчит.

Внутри wait устроен просто: пока время не вышло, он возвращает счётчик на себя и отдаёт остаток тика. На следующем тике процессор снова упирается в ту же строку, проверяет время и снова отдаёт тик.

Это важно: пока программа ждёт, она не выполняет ничего. Запас @ipt не тратится, и место в тике достаётся другим вашим строкам — точнее, достанется, когда ожидание кончится.

Одна и та же программа из одной полезной строки на гиперпроцессоре, 60 тиков:

Хвост Итераций за секунду
ничего 1475
wait 0 59
wait 0.5 2
wait 1 1

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

wait отмеряет паузу по тикам игры, а тик — это 1/60 секунды при нормальной скорости. Когда игра ускорена или тормозит, тики идут иначе, и wait 1 окажется не ровно секундой по часам на стене. Для логики это обычно и правильно: программа живёт во времени игры.

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