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

Лидеры


Популярный контент

Показан контент с высокой репутацией 25.12.2018 во всех областях

  1. 2 балла
    во первых, чтобы была конкуретность, а во вторых MineOS это не ось, а граф.оболочка. Эта фраза уже бичом нервов стала, а чертовы доморощенные эксперты-казуисты продолжают лезть изо всех дыр. Элементарная ОСь на платформе опенкомпов состоит буквально из нескольких сот строк кода, реализующих методы работы с файловой системой, позволяющих монтировать физические дисковые носители, грузить библиотеки по предустановленным путям, обрабатывать события и имитировать многозадачность. Все остальное - это графическая оболочка, в моем случае состоящая из десятка тысяч строк кода, вылизанных до предела, чтобы уложиться в строгие рамки ресурсов, выделенных под каждую виртуальную машину в кубаче. Интерфейс майноси с базовым прикладным софтом по типу проводника/настроек/пикчредакторов/магазинов/IDE мы писали с большой командой товарищей около четырех с фигом лет, постоянно его совершенствуя. Эксперимента ради я решил отвязать майнось от опеноси, сделав ее полностью независимой. Это заняло несколько часов. Ценой нескольких, мать их, часов, а также нескольких написанных либ суммарным объемом в две сотни строк майнось стала полностью удовлетворять определению "операционная система", загружаясь с очищенного от скверны жесткого диска и собственного EEPROM. Результат лежит на отдельном репозитории, законсервированный до лучших дней: https://github.com/IgorTimofeev/MineOSStandalone А теперь скажи мне, умник, не кажется ли тебе странным, что вся "ось" пишется на коленке за несколько часов, а "граф. оболочка" - пускай и не годами, но в значительно большие сроки? Может быть, термин "ось" переоценен, и основу современной интерфейсной операционной системы составляет все же графическая оболочка c прикладным софтом? Эх, мяу
  2. 2 балла
    Ну, формулировать за тебя условия задачи и выполнять решение я точно не буду. Я могу помочь лишь наводящими вопросами. Ещё могу указать на ошибку, если, конечно, замечу её. Могу подсказать, как сделать код лучше. Поэтому твоя первая задача заключается в чёткой формулировке, что именно ты хочешь получить. А то получится как в том анекдоте: в Фотошопе нужна только одна кнопка "сделать красиво". А вот и ответ. Сначала надо изучить Lua. В простых примерах. Для начала сгодится HelloWorld какой-нибудь. Но можно и сейчас начать с чего-нибудь простого. Например, с программы без GUI, которая может выключить компьютер в зависимости от решения пользователя. Или даже не выключить, а просто сообщить о выборе пользователя.
  3. 1 балл
    В общем, сделал две проги: одна для робота, который будет изучать лабиринт; вторая для компуктера, на который будет передаваться красивая картинка лабиринта. Работает предельно просто: запускаешь прогу №2 на компе, ставишь робота в лабиринт и запускаешь на нем прогу №1. Прога №1: https://pastebin.com/dpTQbgtK pastebin run dpTQbgtK Прога №2: https://pastebin.com/qPsZctqh pastebin run qPsZctqh Требования: Связанная карта в роботе и в компе Принцип работы: Рекурсивный dfs-подобный алгоритм. Робот в каждое обследованной клетке крутится по сторонам и смотрит есть ли блок перед ним. Если нет то переходит вперед и рекурсивно обследует дальше.
  4. 1 балл
    Какие именно фичи интересуют? Какие фичи фиг найдешь? Создание окошка с кнопочками - дело пары минут, описанное в деталях в документации: local GUI = require("GUI") -------------------------------------------------------------------------------- -- Создаем главный контейнер с черной фоновой палелью local application = GUI.application() application:addChild(GUI.panel(1, 1, application.width, application.height, 0x0)) -- Добавляем окошко в главный контейнер local window = application:addChild(GUI.titledWindow(50, 22, 60, 14, "Акошко", true)) -- Добавляем лейаут размером 1х2 в окошко local layout = window:addChild(GUI.layout(1, 2, window.width, window.height - 1, 1, 2)) -- Задаем размеры горизонтальных рядов для лейаута layout:setRowHeight(1, GUI.SIZE_POLICY_RELATIVE, 1) layout:setRowHeight(2, GUI.SIZE_POLICY_ABSOLUTE, 2) -- Задаем режим выравнивание объектов для второго ряда по правому нижнему углу layout:setAlignment(1, 2, GUI.ALIGNMENT_HORIZONTAL_RIGHT, GUI.ALIGNMENT_VERTICAL_BOTTOM) -- ... направленние layout:setDirection(1, 2, GUI.DIRECTION_HORIZONTAL) -- ... расстояние между объектами layout:setSpacing(1, 2, 3) -- ... и отступ от правого нижнего угла layout:setMargin(1, 2, 2, 1) -- Доавляем текст в первый ряд лейаута layout:addChild(GUI.text(1, 1, 0x0, "Я оч большой и важный текст")) -- Меняем дефолтный ряд, в который будут добавляться объекты (можно через layout:setPosition(object), но лень) layout.defaultRow = 2 -- Добавляем кнопочки layout:addChild(GUI.adaptiveRoundedButton(1, 1, 2, 0, 0xB4B4B4, 0xFFFFFF, 0x969696, 0xB4B4B4, "Отмена")) layout:addChild(GUI.adaptiveRoundedButton(1, 1, 2, 0, 0xB4B4B4, 0xFFFFFF, 0x969696, 0xB4B4B4, "Еще тык")) -- При "тыке" на эту кнопочку комп будет вырубаться layout:addChild(GUI.adaptiveRoundedButton(1, 1, 2, 0, 0x696969, 0xFFFFFF, 0x969696, 0xB4B4B4, "Тык")).onTouch = function() require("computer").shutdown() end -------------------------------------------------------------------------------- -- Разово отрисовываем содержимое главного контейнера в принудительном режиме (для полной отрисовки буфера, вдруг опенось чет свое нарисует) application:draw(true) -- Начинаем обработку событий application:start() Результат:
  5. 1 балл
    Так-так-так... А кто у нас пару дней назад в чатике мечтал написать свою операционку? Что поменялось за это время?
  6. 1 балл
    Для начала надо определиться, как ты хочешь реализовать эти кнопки: напишешь сам или используешь готовую библиотеку. Использовать готовые библиотеки для новичка проще. Но надо изучить их API, который может оказаться бесполезным в других случаях. Писать самому сложнее, но такой подход позволит сосредоточиться только на знании API OpenComputers, не имея дела с особенностями работы чужих библиотек. Каков твой выбор?
  7. 1 балл
    @MisterFunny01, звучит несколько странно, но ладненько.
  8. 0 баллов
    А вообще нахрена писать свою ОС, есть же MineOS
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...