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