Перейти к содержимому


Фотография

Дверной замок

OpenComputers дверной замок

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 11

#1 Оффлайн   Ren

Ren
  • Пользователи
  • Сообщений: 2
  • Уровень сигнала: 15,15%
  • В игре: 130 час. 5 мин.

Награды

           

Отправлено 04 Июль 2016 - 14:58

Однажды мне понадобился дверной замок, который будет пропускать в дом людей, не находящихся в чёрном листе. Но поскольку использовать чужие программы мне не позволяет религия желание научиться кодить, то...

Дамы и господа, рад представить вашему вниманию очередной велосипед!

 

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

Вот так выглядит интерфейс:

 

Клац

Клац

Да, я совершенно не в курсе, как вставлять картинки

 

(клавиатуру после установки лучше снести во избежание)

Код находится здесь: http://pastebin.com/EcUXVGe2

Итак, для запуска нам необходим обычный компьютер с графической картой и монитором второго уровня и вставленной Редстоун картой (редстоун блок, как на скрине, тоже подойдёт)
Итак, включаем компьютер, устанавливаем программу, создаём отдельный файлик bl.txt, в котором записываем нежелательных личностей (каждый ник с новой строки). Потом запускаем программу, клацаем по монитору, на который будут выводиться менюшка с надписями, второй монитор выставляем на пол перед дверью. Программа готова!
Да, разрешение экрана настроено для монитора в 2 блока шириной и 3 высотой.

 

P.S. Если вы заметили в коде ужасающий костыль (или что-то ещё), который оскорбляет ваши програмистские чувства, то прошу писать сюда. Автору тоже надо учиться :)

 

 

 

[errors='Внимание!']Программа нерабочая, есть ошибки в коде[/errors]


Сообщение отредактировал Alex: 24 Октябрь 2017 - 14:18


#2 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 230
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 04 Июль 2016 - 15:20

Меня смутил вот этот кусок кода:

    ::label::
    f=io.open('bl.txt','w')
    for name,_ in pairs(bl) do
        if f~=nil then
        f:write(name,'\n')
        else goto label end
    end
    if f~=nil then
    f:flush()
    else goto label end
    end

1) Давай подумаем, когда у тебя может произойти переход по метке label? Когда файл не был создан процедурой io.open. Это случится если диск переполнен или защищен от записи. Сомневаюсь, что повторный вызов io.open поможет решить проблему. Скорее всего, это вызовет зависание программы.

2) Если ты все же при сбое решил начинать всё сначала, нет необходимости проверять условие f~=nil каждый раз в цикле. Поскольку в цикле for значение f не меняется, достаточно провести проверку один раз перед началом цикла. Тоже касается и проверке после цикла.

3) По завершении работы с файлом, файл принято закрывать, а не флушить.



#3 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 458
  • Уровень сигнала: 0,22%
  • В игре: 1 час. 54 мин.
  • ГородCity17

Награды

                             

Отправлено 04 Июль 2016 - 16:34

Быстро прошёлся по коду. Здесь лучше поставить локальные переменные:

visited={}
lazy={}
count=0

Так же функции тоже стоит сделать локальными. Глобальные переменные - зло!

 

В этой части кода тоже проблемы:

while true do
what,_,x,y,nameW,nameT=event.pull()
if what == 'walk' then
    lastVisited(nameW)
    if bl[nameW]==nil then
        component.redstone.setOutput(side,15)
        os.sleep(2)
        component.redstone.setOutput(side,0)
    end
elseif what == 'touch' then touched(x,y) end
end

Бесконечный цикл без возможности выйти. Нехорошо.

А так же хотелось бы напомнить про существование библиотеки sides и colors, которые очень удобны будут для настройки программы. (не все поймут что за сторона 3, да и поддержки цветных сигналов нет в проге)

 

В добавок немного придерусь к комментами. Лишние строки с -----------Текст-------------- и прочие делать не стоит. Лишние пробелы тоже. Разделять функции вот так вполне приемлемо:

Первая функция --нормальный коммент
               --нормальный отступ
Вторая функция --нормальный коммент
---------ненормальный коммент------

               --ненормальный отступ размером в 3 строки

-----------------------------------    --ненормальная полоса захламляющая код, особенно если код простой и короткий

--[[
Если между этими скобками рисунок из
псевдографики в несколько строк
который поясняет например отображение
интерфейса - то это нормальный коммент
]]

А так же я обратил внимание что у тебя сторона (side) равна '3' в ковычках. Тестировал прогу? Там же вроде число должно быть, а не текст.


Сообщение отредактировал qwertyMAN: 04 Июль 2016 - 18:56


#4 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 936
  • Уровень сигнала: 5,93%
  • В игре: 50 час. 55 мин.

Награды

                          

Отправлено 04 Июль 2016 - 21:38

В добавок немного придерусь к комментами. Лишние строки с -----------Текст-------------- и прочие делать не стоит. Лишние пробелы тоже.

Зря ты придираешься к комментариям. И пробельные строки, и комментарии из повторяющихся символов -- нормальные способы оформления, упрощающие восприятие кода.

#5 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 458
  • Уровень сигнала: 0,22%
  • В игре: 1 час. 54 мин.
  • ГородCity17

Награды

                             

Отправлено 05 Июль 2016 - 13:25

Зря ты придираешься к комментариям. И пробельные строки, и комментарии из повторяющихся символов -- нормальные способы оформления, упрощающие восприятие кода.

Перфекционизм же.

А так можно что угодно творить со своим кодом. Некоторые прогеры даже матершинные комменты встраивают.

Меня убил этот момент:

local pimp = 0x5f5eff   --цвет пимпочки переключателя

Пимпочка :smile3:


Сообщение отредактировал qwertyMAN: 05 Июль 2016 - 13:28


#6 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 936
  • Уровень сигнала: 5,93%
  • В игре: 50 час. 55 мин.

Награды

                          

Отправлено 07 Июль 2016 - 00:41

Перфекционизм же.

Перфекционизму — да. Голословным заявлениям — нет.
 

Лишние строки с -----------Текст-------------- и прочие делать не стоит.
...
--[[ Если между этими скобками рисунок из псевдографики в несколько строк который поясняет например отображение интерфейса - то это нормальный коммент ]]

Однострочные комментарии из повторяющихся символов являются частным случаем ASCII-графики из нескольких строк.
Объясни, почему плохо пояснять свой код графически.

#7 Оффлайн   Miroshka

Miroshka
  • Пользователи
  • Сообщений: 45
  • Уровень сигнала: 0,01%
  • В игре: 0 час. 5 мин.

Отправлено 21 Октябрь 2017 - 01:23

Ошибочка.. В чём может быть проблема? - https://imgur.com/a/3930l

 

 

именно когда встаю на моник, что в полу.


Сообщение отредактировал Miroshka: 21 Октябрь 2017 - 01:24


#8 Оффлайн   HixOff

HixOff
  • Пользователи
  • Сообщений: 162
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Отправлено 21 Октябрь 2017 - 10:18

Ошибочка.. В чём может быть проблема? - https://imgur.com/a/3930l

 

 

именно когда встаю на моник, что в полу.

попробуйте кавычки убрать у присвоения side
8 строка



#9 Оффлайн   Miroshka

Miroshka
  • Пользователи
  • Сообщений: 45
  • Уровень сигнала: 0,01%
  • В игре: 0 час. 5 мин.

Отправлено 21 Октябрь 2017 - 16:03

@_Star_Craft_ Теперь при касании по экрану - https://imgur.com/a/kkVv9



#10 Оффлайн   Alex

Alex
  • Администраторы
  • Сообщений: 3 787
  • Уровень сигнала: 46,36%
  • В игре: 398 час. 9 мин.

Награды

                 

Отправлено 21 Октябрь 2017 - 17:24

@Miroshka, скачай лучше эпические дверные, биометрические, кодовые замки от профессионалов (Totoro, ECS, ...) и не мучай ни себя, ни нас :)

http://computercraft...zaschita-dveri/
http://computercraft...k-smartlock-04/

 

Ren свою программу, скорее всего, сам даже не запускал ни разу. Я уже молчу про то, что он там что-то комплексно краш-тестил и дебажил.



#11 Оффлайн   HixOff

HixOff
  • Пользователи
  • Сообщений: 162
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Отправлено 21 Октябрь 2017 - 18:33

@_Star_Craft_ Теперь при касании по экрану - https://imgur.com/a/kkVv9

уух ,там косяки в программе. тот, что теперь нашел - нет "w" в режимах в 111 строке. и правда лучше другую программу взять, эту ещё дебажить и дебажить


  • lokin135 это нравится

#12 Оффлайн   lokin135

lokin135
  • Пользователи
  • Сообщений: 52
  • Уровень сигнала: 77,74%
  • В игре: 667 час. 39 мин.
  • ГородПсков

Награды

           

Отправлено 19 Март 2018 - 21:41

кодовые замки от профессионалов

Довольно большие. Могу предложить мини-программу чисто для примера: https://pastebin.com/FGzEA2jv

Может, поможет)

(да-да, тема мертва и все такое...)


  • HixOff это нравится





Темы с аналогичным тегами OpenComputers, дверной замок

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных