ComputerCraft/Кодовый замок

Модификация ComputerCraft добавляет в игру такие полезные предметы, как компьютер, «черепашки», экраны и много прочего. На компьютерах стоит операционная система CraftOS. Программы для устройств пишутся на простом, но довольно мощном языке программирования Lua. С ним быстро освоятся люди, знающие Паскаль, Basic или другие похожие языки.

Кодовый замок

Давайте разберемся, как пишется программа для кодового замка. Кому не интересно, вы можете просто скопировать код и вставить его в файл «startup». Для начала нам надо скрафтить сам компьютер:

Ингредиенты Процесс
Камень +
Красная пыль +
Стеклянная панель

Консоль
Также можно использовать продвинутый компьютер. Далее мы ставим компьютер около двери и включаем его правой кнопкой мыши. Чтобы программа замка была программой по умолчанию, мы будем записывать её в файл «startup». Для этого в консоли пишем команду edit startup

Открывается окно редактора кода. Вот код нашей программы:

os.pullEvent = os.pullEventRaw while true do term.clear() term.setCursorPos(1, 1) print("Enter your password, please!") write("Password: ") pwd = read("*") if pwd == "password" then print("Live granted.") rs.setOutput("left", true) sleep(3) rs.setOutput("left", false) if pwd == "kill" then print("Death granted.") rs.setOutput("right", true) sleep(2) rs.setOutput("right", false) else print("Access denied.") sleep(2) end end 
Строка Описание Комментарий
os.pullEvent = os.pullEventRaw Это не даёт возможность обойти защиту, прервав выполнение программы с помощью удерживания клавиш Ctrl+T. При подобных действиях иногда стоит сохранять старую функцию, например, так: os.pullEvent = os.pullEventRaw
while true do Бесконечный цикл. С бесконечными циклами следует обращаться осторожно, выход из них — только по break.
term.clear() Очистка экрана Эти две функции в более сложных программах имеет смысл объединять в одну.
term.setCursorPos(1, 1) Установка курсора в верхний левый угол экрана.
print("Enter your password, please!") Сначала на экране появится данный текст.
write("Password: ") После слова Password будут вводиться вводимые символы. Не обязательно.
pwd = read("*") Делает ввод строки и записывает её в pwd, при этом заменяя все введённые символы звёздочками.
if pwd == "password" then Если введена строка «password», то… Пароль может быть любым.
print("Live granted.") «Проход разрешён.»
rs.setOutput("left", true) … подаётся положительный сигнал красного камня влево… rs.имяФункции — сокращённая запись redstone.имяФункции. В данном примере дверь находится слева от консоли.
sleep(3) … через 3 секунды… 3 — задержка в секундах.
rs.setOutput("left", false) … сигнал прекращает подаваться.
if pwd == "kill" then Если введена строка «kill», то…
print("Death granted.") «Убить находящегося.»
rs.setOutput("right", true) … подаётся положительный сигнал красного камня вправо… rs.имяФункции — сокращённая запись redstone.имяФункции. В данном примере дверь находится слева от консоли.
sleep(2) … через 2 секунды…
rs.setOutput("right", false) … сигнал прекращает подаваться.
else Если введено что-то ещё…
print("Access denied.") «Доступ отменён.»
sleep(2) Задержка текста на два тикета (на две секунды) Можно поставить на (1), но желательно на (2) и больше.
end Конец ветвления. Для определения количества end проще использовать форматирование «лесенкой».
end Конец цикла. Если количество end будет больше, чем нужно, будет выдана ошибка «<eof> expected». Если меньше, то другая.

Завершение создания

Для сохранения нажимаем клавишу Ctrl и выбираем пункт Save. После этого перезагружаем компьютер удерживанием сочетания клавиш Ctrl+R в течение 1 секунды. Смотрим результат. По желанию возможно добавить пароль «Администратора» для редактирования паролей и/или программы.

В данной статье используются материалы из статьи «ComputerCraft/Кодовый замок» с вики-сайта Minecraft Wiki, расположенного на Фэндоме, и они распространяются согласно лицензии Creative Commons Attribution-Share Alike. Авторы статьи.