Редстоун
Редстоун — это встроенная система сигналов в Minecraft. С её помощью можно управлять поршнями, дверями, дозаторами, фонарями и чем угодно ещё. Через ComputerCraft твои программы могут читать редстоун-сигналы и подавать свои — получается полноценная автоматизация.
Стороны компьютера
Каждый компьютер или черепашка имеет 6 сторон. Для работы с редстоуном нужно указывать с какой стороны читать или подавать сигнал:
| Строка | Сторона |
|---|---|
"front" | Спереди |
"back" | Сзади |
"left" | Слева |
"right" | Справа |
"top" | Сверху |
"bottom" | Снизу |
Чтение входящего сигнала
Подача исходящего сигнала
Практические примеры
Кнопочная дверь:
Сигнализация с задержкой:
Таймер — моргающий сигнал:
Компаратор-управление (аналоговый уровень):
Редстоун-события
Вместо polling-цикла (sleep(0.1)) можно использовать систему событий — эффективнее:
os.pullEvent("redstone") блокирует программу до тех пор пока не изменится любой редстоун-сигнал. Это не тратит CPU и не требует пауз.
Черепашка и редстоун
У черепашки есть только одна сторона для редстоун-взаимодействия — но она умеет сравнивать сигнал:
🚀 Задания
Задание 1
Напиши программу-кнопку: ждёт сигнала со стороны "right" (нажатие кнопки). При получении — включает выход "front" на 5 секунд, потом выключает. Работает в бесконечном цикле.
Задание 2
Напиши светофор: "front" — красный, "left" — жёлтый, "top" — зелёный. Цикл: красный 5с, жёлтый 1с, зелёный 4с, жёлтый 1с, красный снова. Бесконечно.
Задание 3
Напиши охранную систему: os.pullEvent("redstone") ждёт сигнала. Когда сигнал появился на "top" — включает "front" (сирену) на 10 секунд. Логирует время каждого срабатывания (os.time()).
Задание 4
Черепашка-стражник: патрулирует 10 блоков туда и обратно. Если приходит редстоун-сигнал сзади ("back") — немедленно останавливается и ждёт. Когда сигнал пропадает — продолжает патрулирование.
Задание 5
Напиши аналоговый датчик уровня: в цикле читай аналоговый сигнал со стороны "top" (0–15). Рисуй его как полоску на экране: уровень 0 — пустая строка, уровень 15 — "███████████████". Обновляй каждые 0.5 секунды.