🦊 FoxWiki

Циклы с датчиками

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

while в связке с датчиками позволяет строить программы, которые адаптируются к ситуации.


Датчики черепашки

Черепашка умеет проверять окружение в трёх направлениях:

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

inspect возвращает два значения: успех и таблицу с данными о блоке:

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

Идём вперёд пока путь свободен

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

Копаем пока не дойдём до нужного блока

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

Редстоун как датчик

Редстоун-сигналы — универсальный способ общаться с черепашкой из игрового мира:

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

Инвентарь как датчик

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

Комбинированные условия

Реальные программы проверяют несколько вещей одновременно:

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

🚀 Задания

Задание 1 Напиши программу: черепашка идёт вперёд пока впереди нет блока. Встречает блок — копает. Если блок не удалось скопать (жидкость, бедрок) — останавливается и сообщает причину.

Задание 2 Напиши охранника-дверь: бесконечный цикл слушает редстоун-сигнал сбоку. Когда сигнал появился — подаёт сигнал вперёд (открывает дверь) на 3 секунды, потом убирает.

Задание 3 Напиши сортировщик: в бесконечном цикле проверяй первый слот. Если в нём что-то появилось — определи имя предмета через turtle.getItemDetail(1).name и выводи на экран. Жди 1 секунду между проверками.

Задание 4 Напиши бурильщик с защитой: черепашка копает вниз. Перед каждым шагом проверяет что снизу — если "minecraft:lava" или "minecraft:water" — останавливается. Выводит глубину на каждом шаге.

Задание 5 Напиши программу, которая использует три датчика одновременно: топливо > 20, инвентарь не полон, впереди нет лавы. Если любое из условий нарушается — останавливается с сообщением о причине.

НазадЦикл while
ДалееБесконечный цикл