Модификация ComputerCraft добавляет в игру такие полезные предметы, как компьютер, «черепашки», экраны и много прочего. На компьютерах стоит операционная система CraftOS. Программы для устройств пишутся на простом, но довольно мощном языке программирования Lua. С ним быстро освоятся люди, знающие Паскаль, Basic или другие похожие языки.
Давайте разберемся, как пишется программа для кодового замка. Кому не интересно, вы можете просто скопировать код и вставить его в файл «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. | При подобных действиях иногда стоит сохранять старую функцию, например, так: |
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 секунды. Смотрим результат. По желанию возможно добавить пароль «Администратора» для редактирования паролей и/или программы.