Математические операции
Компьютер — это в первую очередь вычислитель. Любая задача в программировании черепашек так или иначе связана с числами: сколько блоков копать, хватит ли топлива до базы, сколько слотов осталось в инвентаре.
В Lua математика работает точно так же, как в обычном калькуляторе, но с несколькими дополнительными операторами.
Основные операторы
| Оператор | Операция | Пример | Результат |
|---|---|---|---|
+ | Сложение | 10 + 5 | 15 |
- | Вычитание | 10 - 3 | 7 |
* | Умножение | 4 * 8 | 32 |
/ | Деление | 20 / 4 | 5.0 |
^ | Степень | 2 ^ 10 | 1024 |
% | Остаток от деления | 17 % 5 | 2 |
Деление всегда возвращает дробное число. 20 / 4 даст 5.0, а не 5.
Математика с переменными
Переменные участвуют в выражениях так же, как числа:
Обновление переменной на основе её же значения — очень частый паттерн:
Остаток от деления (%)
Этот оператор может показаться странным, но он невероятно полезен. Он возвращает то, что "не влезло" при делении.
Пример: черепашка копает длинный тоннель и должна ставить факел каждые 8 блоков. Как понять, когда пора ставить факел?
i % 8 == 0 — это буквально "делится ли i на 8 без остатка".
Порядок операций
Правила те же, что в математике: сначала степень, потом умножение/деление/остаток, потом сложение/вычитание. Скобки меняют порядок:
Библиотека math
Lua включает встроенную библиотеку математических функций:
Округление — черепашка не может пройти полблока, поэтому дробные числа часто нужно округлять:
Случайные числа — полезны для непредсказуемого поведения:
Другие функции:
Практический пример: расчёт топлива
🚀 Задания
Задание 1 Черепашке нужно пройти 150 блоков туда и обратно. Посчитай, сколько всего блоков она пройдёт, и сколько угольных блоков нужно для заправки (1 угольный блок = 80 единиц топлива).
Задание 2
Напиши цикл for i = 1, 20 do, внутри которого черепашка делает шаг вперёд. Каждые 5 блоков (i % 5 == 0) она должна выводить сообщение "Контрольная точка: блок " .. i.
Задание 3
Создай переменные wood = 12, stone = 45, iron = 7. Найди самый большой запас с помощью math.max. Выведи результат.
Задание 4
Напиши генератор случайных координат: три переменные x, y, z, каждая — случайное число в своём диапазоне (x: -100..100, y: 5..60, z: -100..100). Выведи координаты.
Задание 5 Объясни в комментариях и исправь: почему следующий расчёт даёт неожиданный результат?