🦊 FoxWiki

Условия

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

Чтобы программа умела реагировать на разные ситуации, используются условия — конструкция if.


Базовая конструкция

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

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

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

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

Условие — это всегда выражение, которое даёт true или false:

ОператорЗначениеПример
==равноfuel == 0
~=не равноstatus ~= "ok"
>большеdiamonds > 10
<меньшеfuel < 100
>=больше или равноslots >= 16
<=меньше или равноdepth <= -50

В Lua "не равно" пишется как ~=, а не != как в большинстве других языков.


if / else — два варианта

Когда нужно выполнить одно действие если условие верно, и другое — если нет:

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

if / elseif / else — несколько вариантов

Когда вариантов больше двух:

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

Компьютер проверяет ветки сверху вниз и выполняет первую подошедшую. Остальные игнорируются. Порядок важен — более конкретные условия пиши выше.

Важно для Lua: elseif пишется слитно, одним словом. Если написать else if раздельно — компьютер потребует отдельный end для каждой ветки, что приводит к ошибкам.


Что такое истина в Lua

В большинстве языков 0 и пустая строка считаются ложью. В Lua — нет.

Ложью (false) в Lua являются только два значения:

  • false
  • nil

Всё остальное — истина: 0, "", пустая таблица {}. Это неочевидно и часто удивляет программистов из других языков:

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

Условия в реальных программах

Условия появляются повсюду. Несколько практических паттернов:

Проверка перед копанием:

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

Выбор инструмента по типу блока:

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

Аварийная остановка:

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

🚀 Задания

Задание 1 Напиши программу: если уровень топлива черепашки ниже 50 — выведи предупреждение и попробуй заправиться из первого слота (turtle.refuel(1)). Иначе — просто выведи текущий уровень топлива.

Задание 2 Создай переменную time = "night". Напиши условие: если время "day" — выводи "Черепашка работает", если "night""Черепашка отдыхает", иначе — "Неизвестное время".

Задание 3 Черепашка проверяет блок перед собой (turtle.inspect()). Если это "minecraft:diamond_ore" — копает и выводит "Алмазная руда!". Если это "minecraft:stone" — просто копает. Иначе — не трогает и идёт дальше.

Задание 4 Найди ошибку в этом коде и объясни, почему она возникает:

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

Задание 5 Напиши программу с тремя elseif, которая проверяет инвентарь черепашки: если в первом слоте больше 32 предметов — "Слот переполнен", от 16 до 32 — "Слот заполнен наполовину", меньше 16 — "Слот почти пуст", 0 — "Слот пустой".

НазадУсловия с else и elseif
ДалееКастомные API курса