🦊 FoxWiki

Математические операции

Компьютер — это в первую очередь вычислитель. Любая задача в программировании черепашек так или иначе связана с числами: сколько блоков копать, хватит ли топлива до базы, сколько слотов осталось в инвентаре.

В Lua математика работает точно так же, как в обычном калькуляторе, но с несколькими дополнительными операторами.


Основные операторы

ОператорОперацияПримерРезультат
+Сложение10 + 515
-Вычитание10 - 37
*Умножение4 * 832
/Деление20 / 45.0
^Степень2 ^ 101024
%Остаток от деления17 % 52

Деление всегда возвращает дробное число. 20 / 4 даст 5.0, а не 5.


Математика с переменными

Переменные участвуют в выражениях так же, как числа:

Редактор Lua
1
2
3
4
5
6
7
8

Обновление переменной на основе её же значения — очень частый паттерн:

Редактор Lua
1
2
3
4
5

Остаток от деления (%)

Этот оператор может показаться странным, но он невероятно полезен. Он возвращает то, что "не влезло" при делении.

Пример: черепашка копает длинный тоннель и должна ставить факел каждые 8 блоков. Как понять, когда пора ставить факел?

Редактор Lua
1
2
3
4
5
6
7
8
9
10
11
12

i % 8 == 0 — это буквально "делится ли i на 8 без остатка".


Порядок операций

Правила те же, что в математике: сначала степень, потом умножение/деление/остаток, потом сложение/вычитание. Скобки меняют порядок:

Редактор Lua
1
2

Библиотека math

Lua включает встроенную библиотеку математических функций:

Округление — черепашка не может пройти полблока, поэтому дробные числа часто нужно округлять:

Редактор Lua
1
2
3
4
5

Случайные числа — полезны для непредсказуемого поведения:

Редактор Lua
1
2
3
4
5
6

Другие функции:

Редактор Lua
1
2
3

Практический пример: расчёт топлива

Редактор Lua
1
2
3
4
5
6
7
8
9

🚀 Задания

Задание 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 Объясни в комментариях и исправь: почему следующий расчёт даёт неожиданный результат?

Редактор Lua
1
2
НазадЛогические операторы
ДалееДобыча ресурсов