Окно переменных
Единственное место, которое говорит правду о том, что программа насчитала
В mlog нет ни сообщений об ошибках, ни падений. Программа с опечаткой не жалуется — она молча считает не то. Поэтому вторая по важности кнопка под окном программы — «Переменные»: она показывает содержимое памяти процессора в этот момент.
На страницах курса эта таблица всегда открыта справа от строк: в примере заглядывать в неё приходится чаще, чем в игре.
Что в строке
Заголовок раздела «Что в строке»Строка таблицы — три ячейки: имя, значение, тип. Тип игра называет своим словом и красит своим цветом:
| Тип | Что это |
|---|---|
number |
число |
null |
пусто: переменную ни разу не записали |
string |
текст в кавычках |
content |
предмет, жидкость, блок или тип юнита |
building |
здание — то, что даёт связь |
unit |
юнит |
team |
команда |
enum |
значение из списка, вроде enabled |
Первым в таблице обычно идёт @counter — номер строки, которая выполнится следующей.
Дальше ваши переменные в том порядке, в каком они впервые встретились в программе.
Видно не всё
Заголовок раздела «Видно не всё»Константы в таблицу не попадают: @copper, @this, @ipt, @links и имена связей
(cell1, switch1) в ней не появятся — они не меняются, показывать там нечего.
Их список открывается кнопкой «Встроенные переменные» в том же окне; у нас он лежит на странице встроенных переменных.
Опечатка видна сразу
Заголовок раздела «Опечатка видна сразу»В примере ниже программа из прошлых уроков, но с одной буквой не на месте: во второй строке
написано запс, а не запас. Нажмите «пуск» и посмотрите в таблицу.
итог равен пяти вместо двадцати пяти. Почему — видно там же:
запс— лишняя строка со значениемnull. Имени, которого не присваивали, mlog заводит свою переменную и кладёт тудаnull. Незнакомое имя для него не ошибка, а новая переменная.удвоеноравно нулю. В арифметикеnullсчитается нулём: ноль на два — ноль.итогравен пяти. Ноль плюс пять. Программа отработала честно, просто не с тем числом.
Это самый частый способ сломать программу, и лечится он глазами: если в таблице две почти одинаковые строки — вы опечатались.
Значения обновляются не мгновенно
Заголовок раздела «Значения обновляются не мгновенно»В игре таблица перечитывает значения раз в пятнадцать тиков — примерно четыре раза в секунду, и изменившееся число вспыхивает жёлтым. Это не задержка счёта, а частота показа: процессор за это время успевает сделать сотни шагов, и увидеть каждый нельзя.
Пока окно переменных открыто, игра не на паузе: окно программы её ставит, а окно переменных снимает — иначе числа бы не менялись.
В примерах курса таблица обновляется каждый кадр, а кнопка «шаг» даёт посмотреть ровно на одну инструкцию — в игре так нельзя.
Разбор ошибок посложнее — в уроке «Когда не работает».
Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.