OpenComputers/Программа: кодовый замок
Построим компьютерный кодовый замок!


На сервере с защитой от гриферов (иначе его будет легко сломать), такой замок сможет успешно защищать вход в ваш дом.

И в отличие от кодового замка на красной пыли, он будет занимать значительно меньше места.



## Устройство

Слева от двери сделаем отверстие для монитора, который будет обращен экраном наружу. На монитор поместим клавиатуру и соединим его кабелем с компьютером. На скриншоте питание компьютера подведено снизу (этажом ниже располагается батарея, для бесперебойного питания).

Проведем дорожку красной пыли так, чтобы открывались обе створки одновременно. Справа от двери поместим обычную каменную кнопку. Таким образом можно будет покинуть здание, не тратя время на ввод пароля.


Установите в компьютер простую видеокарту (при маленьком разрешении будет хорошо виден текст на дисплее снаружи), красную плату для работы с сигналами красной пыли и жёсткий диск или дискету, на которую будет записана программа.

## Программирование

-- подключаем необходимые интерфейсы local term = require("term") local sides = require("sides") local note = require("note") local component = require("component") -- находим красную плату компьютера local rs = component.redstone -- объявляем переменные: пароли и переменную для записи ввода local password = "mad", admin = "exit", try -- отключаем сигнал на переднюю панель компьютера (дверь закрыта) rs.setOutput(sides.south, 0) -- очищаем терминал term.clear() while true do -- ввод пароля io.write("Enter password: ") err, try = pcall(io.read) -- если игрок попытался прервать программу if not err then print("No, no, no!") -- если пароль верный elseif try == password then -- пускаем сигнал на переднюю сторону компьютера (дверь открыта) rs.setOutput(sides.south, 15) print("Ok. 3 seconds!") -- воспроизводим звуковой сигнал note.play(83, 0.3) note.play(90, 0.2) -- ожидаем две с половиной секунды os.sleep(2.5) -- закрываем дверь rs.setOutput(sides.south, 0) print("Locked!") -- если введенное слово совпало с администраторским паролем elseif try == admin then -- прерываем выполнение программы break -- если была введена команда "cls" elseif try == "cls" then -- очищаем консоль term.clear() -- если было введено что-то другое else -- выводим сообщение, и воспроизводим звук ошибки print("Wrong password! Try again.") note.play(70, 0.2) end end


Разместим программу в корневом каталоге, и назовем ее `lock.lua`

.

Запустите программу командой `lock`

.
Теперь каждый подходящий к дверям будет видеть такое сообщение:


После успешного ввода пароля, программа откроет двери на три секунды, а затем закроет их снова.