Minecraft Wiki
Advertisement
Версия для печати больше не поддерживается и может содержать ошибки обработки. Обновите закладки браузера и используйте вместо этого функцию печати браузера по умолчанию.

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

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

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

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

Консоль

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

edit startup

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

os.pullEvent = os.pullEventRaw
 while true do
 term.clear()
 term.setCursorPos(1, 1)
 print("Enter password!")
 write("password: ")
 pwd = read("*")
 if pwd == "1452" then 
  print("Open.")
  rs.setOutput("left", true)
  sleep(3)
  rs.setOutput("left", false)
 if  "kill" then
  print("Close. Clear...")
  rs.setOutput("right", true)
  sleep(2)
  rs.setOutput("right", false)
 else
  print("Access denied.")
  sleep(2)
 end
 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 секунды. Смотрим результат. По желанию возможно добавить пароль «Администратора» для редактирования паролей и/или программы.

Advertisement