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

Laine_prikol

Пользователи
  • Публикации

    155
  • Зарегистрирован

  • Посещение

  • Победитель дней

    3

Сообщения, опубликованные пользователем Laine_prikol


  1. Я давно уже хотел сделать простой браузер html, но знаний и времени не хватало, и вот сейчас я вам представляю pre-alpha версию своего "браузера html". Он может открывать простые странички (странички которые весят больше 4 кб) и отображать текст. Пока не поддерживает форматирование, и большинство тегов. Но чтобы получить небольшую информацию в тестовом виде можно.

     

    Пример отображение страничек:

    post-18530-0-02475100-1489820324_thumb.png post-18530-0-94709600-1489820338_thumb.png

    Установка и запуск:

    Скачать можно командой: pastebin get jNPDqSkn htmlbrowse.lua

    Запустить: htmlbrowse <ссылка обязательно с http:// или https://>

    Версия 1.0-prealpha
    Первый релиз
    
    • Нравится 1

  2. Для начала вполне неплохо, но код опять слишком избыточный. Цвета можно генерировать или хотя-бы предоставить пользователю задавать их вручную и не помешало бы автоматическое масштабирование под разрешение монитора.

     

    Если что-то непонятно, то можно спросить в чате, а по граблям можно ходить всю жизнь.

    Выпустил обновление, код сжат

    • Нравится 1

  3. Для начала вполне неплохо, но код опять слишком избыточный. Цвета можно генерировать или хотя-бы предоставить пользователю задавать их вручную и не помешало бы автоматическое масштабирование под разрешение монитора.

     

    Если что-то непонятно, то можно спросить в чате, а по граблям можно ходить всю жизнь.

    Там можно добавлять свои цвета и типы заливки. Заливки хранятся в файлах: customFills.cfg и customFills1.cfg, а цвета в: colors1.cfg и colors2.cfg


  4. Описание:

    Данная программа позволяет рисовать/сохранять/открывать картинки. Поддерживаются: цвета, типы заливки(символами которыми мы будет рисовать). программа использует библиотеку GPIC.

     

     Использование:

    Запустить программу можно командой: lainepaint <Название картинки> <ширина картинки> <высота картинки>

    Интерфейс программы:

    post-18530-0-31966800-1489221119_thumb.png

    Кнопки находятся вверху экрана: - Сохранить файл с названием который вы написали при запуске [C] - Закрыть программу без сохранения [+] FILL [-] - Изменение типа заливки [+] COLOR [-] - Изменение цвета [O] - Открыть изображение которое вы указали при запуске [N] - Очистка экрана

     

     Скачать:

    Скачать программу можно командой: pastebin run 34FYNB4N и просто ждите пока установщик установит всё что нужно для работы программы.

    Версия 0.3-r1

    Добавлена возможность создавать изображение любого размера

    • Нравится 1

  5. Скопировал твой код, возможно у тебя неправильная кодировка. Само число 80 ДОЛЖНО быть, ибо это ширина картинки.

    DV3EoJy.png

    На OpenOS 1.6 всё нормально сохраняется, а на 1.5 почему-то просто число 80 и больше нечего


  6.  

    Вместо кучи копипаста с настройкой нот ты мог создать функцию:

    function setNote(numNote,key)
        if keyboard.isKeyDown(key) then
            os.sleep(0.1)
            print("Настройка ноты " .. numNote)
            -- Чтение частоты
            io.write("Частота: ")
            note[numNote] = io.read("*number")
            -- Чтение длительностей
            io.write("Длительность (в секундах): ")
            notesec[numNote] = io.read("*number")
            redrawMenu()
        end
    end
    

    Попробую добавить в свой код

    UPD: с 223 строк сжал до 112


  7.  

     

    В программировании разрешены вложенные циклы. Ты мог спокойно, не копировать для каждой ноты отдельные настройки, а задать их через цикл.

     

    Кроме того, у тебя не типичные отступы. Отступы делаются когда пишешь что-то внутри do ... end или then ... end и в прочих подобных случаях, кроме того, отступы могут складываться. Например идёт цикл, всё что внутри имеет один отступ. Внутри есть этого цикла есть условие if. Всё что внутри будет иметь уже 2 отступа, так как содержимое находится и в условии и в цикле. Для вложенных циклов/условий правило такое же.

    Хоть эти отступы и не будут на работу кода влиять, но это важный показатель читаемости кода. А значит с читаемым кодом и ты сможешь проще читать и находить ошибки, и другие программисты смогут это делать.

     

    Следующий момент, это условие if x == true then ... end Тут суть такова, если после if будет любая переменная кроме nil (пустая или не существующая переменная) или false, то цикл выполняться будет. А значит, это выражение можно сократить до if x then .. end

     

    Ещё в твоём случае, тебе проще вместо keyboard.isKeyDown(0x3B) == true использовать обработку событий через local key = {event.pull("key_down")}

    Эта функция будет ждать события "key_down" (нажатие клавиши) и когда ты нажмёшь клавишу, в переменную key сохранится пронумерованная таблица, из которой можно получить адрес клавиатуры откуда пришёл сигнал, номер нажатой клавиши, ник игрока нажавший клавишу и прочую нужную инфу.

    Такой способ не потребует выставлять задержки, так как функция будет просто ждать пока событие не произойдёт. Да и к тому же код станет намного лучше, как визуально, так и по нагрузке на сервер/комп

     

     

    Я привык уже к keyboard api. Потом может переделаю, уже убрал кучу переменных сделал большой массив, и убрал ненужные строки кода, и с 278 строк уменьшил до 223


  8.  

     

    Прочитав заголовок, я уже подумал, что ты осуществил мою давнюю идею построить полноценный проигрыватель и редактор музыки. Возможно даже в .abc формате, как я и хотел. Но посмотрев на скрин, всё стало ясно. А я чуть было не поставил тебе лайк за старания... Но это не вся итория...

    Далее я посмотрел в код и был шокирован:

    currentNote = 0
    note1 = 0
    note2 = 0
    note3 = 0
    note4 = 0
    note5 = 0
    note6 = 0
    note7 = 0
    note8 = 0
    note9 = 0
    note10 = 0
    note1sec = 0
    note2sec = 0
    note3sec = 0
    note4sec = 0
    note5sec = 0
    note6sec = 0
    note7sec = 0
    note8sec = 0
    note9sec = 0
    note10sec = 0
    i = 0
    i2 = 0
    

    Получается ты не знаешь и не умеешь пользоваться массивами, которые бы намного упростили бы работу с переменными. И тут я подумал что всё! Меня больше тут нечем удивить, но тут я увидел ЭТО...

    os.sleep(0.1)
        if keyboard.isKeyDown(0x3B) == true then -- f1
        os.sleep(0.1)
        print("Настройка ноты 1")
        -- Чтение частоты
        io.write("Частота: ")
        note1 = io.read("*number")
        print("Частота установлена на"..note1)
        -- Чтение длительностей
        io.write("Длительность (в секундах): ")
        note1sec = io.read("*number")
        print("Длительность установлена на"..note1sec)
        redrawMenu()
        end
    os.sleep(0.1)
        if keyboard.isKeyDown(0x3C) == true then -- f2
        os.sleep(0.1)
        print("Настройка ноты 2")
        -- Чтение частоты
        io.write("Частота: ")
        note2 = io.read("*number")
        print("Частота установлена на"..note2)
        -- Чтение длительностей
        io.write("Длительность (в секундах): ")
        note2sec = io.read("*number")
        print("Длительность установлена на"..note2sec)
        redrawMenu()
        end
        if keyboard.isKeyDown(0x3D) == true then -- f3
        os.sleep(0.1)
        print("Настройка ноты 3")
        -- Чтение частоты
        io.write("Частота: ")
        note3 = io.read("*number")
        print("Частота установлена на"..note3)
        -- Чтение длительностей
        io.write("Длительность (в секундах): ")
        note3sec = io.read("*number")
        print("Длительность установлена на"..note3sec)
        redrawMenu()
        end
    

    Отлично написанный код!

     

    1.jpg

     

    В общем. Вместо того, чтобы использовать удобненькие православные циклы, ты использовал копипастинг! Это гениально!

     

    В общем, пора подводить итоги.

    Твоя программа занимает примерно 250 строк кода, даёт функционала мало, я бы сказал крайне мало, практически ничего. Нормально выглядящий код занимал бы намного меньше строк кода.

    А теперь сравни свой код с этим http://computercraft.ru/topic/1570-oc-redcontrol-udobnoe-upravlenie-redstounom/

    Там на 2 строки кода больше, чем в твоём коде, но функционала намного больше. Программа содержит и графический интерфейс и часть кода для отлавливания кликов по экрану и команды реагирование на события. И даже поддержку подключения и отключения компонентов во время работы.

    Напомню, это 280 строк кода. Всего-то на 2 больше чем у тебя. Чуешь разницу?

     

    А всё дело в том, что у меня использованы циклы и массивы, а у тебя нет. И это ужасно. Ты обязан их изучить, иначе будешь и дальше так же перерабатывать, писать больше кода с меньшей эффективностью.

     

     

    1. Тут цикл есть (может я немного не понял тебя)

     

     

    5d05a6442ae4407d5edca1d4600d1dc5.png

     

     

    2. Массивов нет. ты тут прав.


  9. Что тебя так тянет некропостить? Вот же эмулятор - уже более года у меня в блоге инструкция по установке висит. Обе версии луа, модемы, OpenOS 1.6 и прочее.

    Он у меня не работает, пишит: "Невозможно запустить это приложение на вашем пк"

    UPD: Я не ту версию скачал


  10. Вылетает. Просто "Прекращена работа программы" и всё!

    UPD: Запустил через контекстное меню и заработало! Только вот OpenOS 1.5  :unsure: При попытке поставить 1.6, падает


  11. У меня почему-то когда сохраняю в файл,  в файле просто число 80 и больше нечего.

     if keyboard.isControlDown() == true then
     os.sleep(0.1) 
    	local picture = gpic.new(1, 1, 80, 25)
    	gpic.draw(1, 1, picture) 
    	gpic.write(picture,"/home/image.gpic")
    end
    

  12. Описание:

    Сегодня я вам покажу программу Note Sequencer которая позволит создавать мини музыкальные треки. В программе есть 10 цикличных нот которые можно менять, также можно сделать рандом трек. Программа очень простая. По возможности пишите свои предложения что можно добавить (если конечно, смогу)

     

    Установка:

    pastebin get PYAySJ27 note (код) (0.1)

    pastebin get 4fng04sA note (код) (0.2)

    pastebin get 4fng04sA note (код) (0.3)

     

    Запуск:

    note

     

     

    История версий

     

     

    [0.1] Первый релиз
    [0.2] Уменьшен код 
    [0.3] Оптимизация и уменьшения кода

     

     

     

    Версия 0.3

    Оптимизация и уменьшения кода

    post-18530-0-70041500-1488817030_thumb.png

    • Нравится 3

  13. Я бы хотел узнать можно вообще сделать в OpenComputers RAM-Disk. Чтобы если ты без винта мог редактировать файлы и переставлять дискеты. Например, у меня есть дискета с OpenOs и я хочу без винта попробовать переставить дискету со своей программой и нечего не выходит, OpenOS просто крашится. или создать робота без жёсткого диска, но при этом был нормальный OpenOS


  14. Где-то я уже видел на форуме такой же интерфейс и функционал.

    Неужели плагиат???

    Вот это?  Так это тоже моя программа. И старая версия работала напрямую с редстоун картой


  15. Программа позволяет удалённо управлять микроконтроллером который, управляет редстоуном.

     

    Конфигурация микроконтроллера:

    post-18530-0-52266900-1486751291_thumb.png

     

    Установка:

    pastebin run 7hZwfta9

    И следуйте инструкциями программы установки.

    post-18530-0-53634300-1486751404_thumb.png

    • Нравится 1
×
×
  • Создать...