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

Материал из Minecraft Wiki
Перейти к: навигация, поиск

Модификация 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. При подобных действиях иногда стоит сохранять старую функцию, например, так:

{{{1}}}

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 секунды. Смотрим результат. По желанию возможно добавить пароль «Администратора» для редактирования паролей и/или программы.