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

Totoro

Гуру
  • Публикации

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

  • Посещение

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

    289

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


  1. Я немножко полный нуб в OpenComputers и у меня возник вопрос. Как запустить то?

     

    1) Собрать компьютер удовлетворяющий этим требованиям: http://computercraft.ru/topic/259-hologram-editor-opencomputers/?p=2814

    2) Установить на него OpenOS с дискетки.

    3) Скачать программу. Для этого надо набрать в консоли команду: pastebin get tdxECas7 holo

     

    После этого программа окажется в корневом каталоге жесткого диска в файлике под названием holo.

    Ее можно будет запустить набрав команду holo.


  2. У кого-нибудь есть объяснение такой математике? Турель делает почти полный оборот при перемещении между этими координатами:

    os_energyturret.moveTo(180.000007,0)

    os_energyturret.moveTo(180.000008,0)

     

    Все дело в том, что в исходнике этой функции значения аргументов типа double приводятся к типу float.
    При этом значение естественно приобретает некоторую погрешность (ведь значение двойной точности было приведено к обычной).
     
    Java (на которой написан мод) хранит дробные данные в формате IEEE 754-1985.
    Конвертация типов приводит к тому, что в двоичном представлении мантисса подрезается с 52 бит до 23, а экспонента с 11 до 8.
     
    Выглядит это так:
    Число 180.000007:
    0 10000000110 0110100000000000000000001110101011100001100010101101
    превращается в:
    0    10000110 01101000000000000000000
     
    Число 180.000008:
    0 10000000110 0110100000000000000000010000110001101111011110100001
    ->
    0    10000110 01101000000000000000001
     
    Как видно во втором случае при округлении захватывается одна единичка мантиссы, которая и приводит к кардинально другому результату.
     
    Результат:
    180.000007 d -> 180.0 f
    180.000008 d -> 180.00002 f
     
    Т.е. числа становятся по разную сторону от значения 180.
    Ну а алгоритм турели в OpenSecurity таков, что не дает ей проходить отметку 180 градусов. Об этов вроде где-то выше qwertyMAN писал.
    =)
    • Нравится 2

  3. swing_check.png

     

    Блок проверки только генерит значение. Для того чтобы создать "развилку", надо добавить ромбик-проверку. Оранжевый пунктир показывает, что блок проверки передает с зеленого узла логическое значение.

     

    Синий узел нужен для повторного использования этого значения позднее, если надо.

    А выполнение программы всегда идет с зеленого на красный узел.

     

    Код будет выглядеть так:

    -- [OcBlocks v0.3a generated code] --
    local robot = require('robot')
    local a = robot.detect()
    if a then
      robot.swing()
      ::b::
      robot.forward()
      os.exit()
    else
      robot.forward()
      os.exit()
    end
    -- [The END] --
    

    Не идеал в плане оптимизации, но логику передает верно.


  4. Думаю на практике, библиотеку можно свести к функции convert(value: number, to: number). Который будет изредка юзаться для конвертации и вывода результата вычислений в какую-нибудь нужную систему.

    Ибо какая к черту разница как оно там под капотом хранится. Конструкция из строк и таблиц не будет эффективнее примитивного типа number.

     

    С точки зрения же получения удовольствия от написания программы, игры с системами счисления, таблицами и языком Луа - вопросов нет, дело хорошее =)

     

    P.S. Гигантскую таблицу в начале можно генерить налету с помощью string.byte и string.char

    P.P.S. В доках, лучше вначале писать название переменной, а потом, через двоеточие, тип. Такой стиль используется в большинстве документов. И конструкции типа class DecInteger(string: number) - DecInteger instance изрядно путают. Это строка с названием number или число с названием string?

    • Нравится 6

  5. Теперь на O-Blocks можно официально написать свой "хеллоу-ворлд"!

    untitled.png

    Скачать бесплатно без СМС:

    OcBlocks 0.3a (1.1 Mb)

    -- [OcBlocks v0.3a generated code] --
    local a = 'Hello World!'
    local robot = require('robot')
    ::b::
    print(a)
    os.exit()
    -- [The END] --
    • Нравится 6

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

     

    На самом деле 12 на "воксель" )

    И если Сангар не применял какой-нибудь хитрый алгоритм для упрощения сетки, то в ёлочке их и в самом деле немало.

    Хотя и не особенно много, по меркам современных 3D игр.


  7. Сразу прошу помощи, как сделать так чтоб на обоих экранах шло одинаковое изображение.

     

    Попробуй юзать команду gpu.bind(address: string): boolean[, string]

     

    На ум приходит два варианта:

    1) Ставишь две видюхи - биндишь каждую к своему монитору и рисуешь.

    2) Ставишь одну карту, и биндишь ее поочереди к каждому монитору и рисуешь.

    • Нравится 2

  8. Немного критики.

     

    1) Отступы скачут. Сделай жестко 2 пробела для блока, будет читать легче.

     

    2) Называть переменные "a", "b", "c" - не айс. Желательно давать названия, которые сами по себе поясняют, что хранится в переменной.

    Например - "width" (ширина), "height" (высота), "number" (число).

     

    3) Что делает эта строка?

    function unload()
      robot.turnRight()
      robot.detect()         <--- вот эта
      robot.select(chest)
    

    4) Проверку на чет-нечет

    if math.ceil(b/2) == b/2 then    -- это ведь она?

    проще сделать так

    if b%2 == 0 then
    

    Операция % означает "остаток от деления на".

     

    5) На деле программа спит не N секунд, а 10N.

    for i=1, 10 do
        os.sleep(n)
    

    Если я правильно понял код, надо использовать здесь os.sleep(n/10)


  9. Небольшое обновление. Запатчил и проапдейтил. Теперь будет запускаться на секунду дольше, это нормально. =)

     

    dig_all_forward.png

     

    Скачать

    OcBlocks 0.21a (1 Mb)

     

    Что нового

    • Экспорт "кода" в картинку PNG с прозрачным фоном. Типа той, что выше.
    • Поддержка вермишельного кода. Типа того, что выше.

    Экспортируется во что-то такое:

    -- [OcBlocks v0.21a generated code] --
    local robot = require('robot')
    ::a::
    local b = robot.detect()
    if b then
      robot.swing()
      robot.forward()
      goto a
    else
      robot.forward()
      os.exit()
    end
    -- [The END] --
    
    • Нравится 5

  10. А то так же можно и назвать громким названием программку для кодового замка ванильной дверцы майна или сканирования коров сканером из ОС-ки на подобии в духе, мол, "Программа Агент Смитт, версия 2.0" :D

     

    "Агент Смитт" должен уметь возвращать на место коров, которые догадались, что есть мир за пределами загона.  :D

    • Нравится 2

  11. Годнота, только еще надо бы сделать возможность лепить несколько веревок на один вход/выход, а то чтобы прикрутить какой-нибудь код после if надо либо делать дублирование кода до if, либо составлять бороду из if if if, чтобы сделать необязательный if

     

    Имеешь ввиду что-то такое?

     

    ocb-programm0.png

     

    Несколько веревок на выход я делать не буду, поскольку это создает неоднозначность выполнения. По какой линии должна двинуться программа? По рандомной, или по очереди (по какой очереди?)... Это создает неочевидность и запутанность.

     

    Несколько веревеок на вход я делаю сейчас.

    Тут проблема в том, во что это будет экспортировано. То что выше, на скриншоте - по сути цикл while. И по хорошемо должно экспортироваться в него. Однако схема может быть гораздо запутаннее, с несколькими переходами в начало цикла, или даже не только в начало.

    Поэтому скорее всего, это все будет экспортировано в виде вермишели с операторами goto. =) Это конечно не радует, и противоречит принципам красивого кода... Но зато в OcBlocks "код" станет красивее и понятнее.

    • Нравится 1

  12. Языком бороздить форум все умеют, флаг в руки креатив офф и давай-ка мне за сутки забабахкай Зион.

     

    Нео, так вы этом и суть. Возьми креатив, сингл, где есть все, ничего не лагает, и есть доступ к файлам, модам, сейву в любой момент.

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

     

    А потом К.А. с радостью поможет тебе его "развернуть" на сервере, я уверен в этом на 100%.

    • Нравится 2

  13. Я тут полистал свой календарь и обнаружил вопиющую пропажу - исчезли выходные на прошлой неделе.

    "Как же так, - подумал я, - ведь я собирался выложить OcBlocks 0.2а в субботу"

    Но злодеев найти так и не удалось, поэтому выкладываю программу сегодня.

     

    Среда программирования пополнилась новыми плюшками, и новыми операторами.

    Пожалуй лучше всего опишет изменения вот этот скриншот:

     

    O-Blocks3.png

     

    Который транслируется в такой код:



    -- [OcBlocks v0.2a generated code] --
    local robot = require('robot')
    local a = robot.detect()
    local b = robot.detectUp()
    local c = b == a
    if c then
      robot.down()
    else
      -- pass --
    end
    -- [The END] --


    Скачать

    O-Blocks 0.2a (1.22 Mb)

     

    Подробнее

    •   Добавлен инструментарий для работы с группами блоков - рамочка для выделения, хоткеи и меню для вырезания, копирования, вставки и удаления.
    •   Добавлены типы данных. Пока только boolean (оранжевый). Вы можете заметить у некоторых блоков дополнительную синюю ноду. Это Нода Данных, которая позволяет в любой момент стянуть с нее значение, которое хранит в себе блок. К нодам данным может быть подключено любое число линий. Пунктир на линии помечает тип данных, который этой линией передается. (Красный пунктир - неправильное подключение линии).
    •   Линии могут быть белыми и черными. Черные - это линии контролирующие ход программы и последовательность выполнения блоков. По ним выполняется схема, и по ним же она транслируется. Белые линии - пассивные линии данных. По ним блоки могут получать данные от других блоков, когда нужно.
     

    Должен заметить, что суффикс "a" в номере версии означает "альфа". То есть, контент настолько сырой, что у меня не хватает нахальства называть его "бета".

    Все изменения представляют собой наброски "того как оно будет", и ожидают вашей бурной критики и предложений по улучшению.

     

    P.S. Репа проекта по прежнему открыта для предложений, багрепортов и пулл-реквестов. 


    • Нравится 4

  14. Да, упустил из виду Alert'ы. До версии Java 8u40, они существовали отдельно, в составе большой библиотеки ControlsFX Dialogs. Потом Oracle увидел, что это круто, и прибрал к рукам )

    Добавлю уточнение в стартовый пост.

     

     

    Прикольно. Вот бы иметь возможность как-то влиять на трассы без перемещения блоков. Сложная схема может оказаться плохо читаемой.

    Жду циклы и логику.

    Есть вариант добавить режим редактирования контрольных точек к "трассам". Тогда можно будет поправить форму.

    Либо прямо тасканием за середину линии изменять.

     

     

    Спасибо всем большое за отзывы и багрепорты! Это воодушевляет писать дальше  :)

    Циклы и логика на подходе. К сожалению, времени на все не хватает, поэтому обновление может подзажержаться.


  15. Обновил немного билд. Багфиксы и блоки "копать" / "строить". Ссылка в первом посте обновлена.

     

    У меня аналогичный результат

    Может такое быть, что у тебя старый билд? Я тестировал последний на Win 7 - все в порядке.

    Попробуй вот этот: OcBlocks 0.11a (1.14 Мб)

    Также, убедись что запускаешь на Java 8.

    Если же ничего не поможет - скинь свой стектрейс ошибки на pastebin, со всеми подробностями (+ конфигурация на которой запускаешь - система, Java, разрядность).

     

    Не хватает передвижения мышкой по рабочему пространству.

     

    Зажми колесико и двигай мышь )

    • Нравится 1

  16. Дима, планируешь ли добавить работу с инвентарем, слотами, или только базовая визуализация движения, логики и циклов для понимания основ новичками?

     

    Работа с инвентарем и слотами разумеется будет.

    Однако не сразу, т.к. наряду с логикой, циклами и прочими интересными штуками, потребует проработки.

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

     

    Примерный "roadmap" есть на Github проекта, в описании.

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

    Далее последуют циклы, продвинутые действия робота (инвентарь, генераторы всякие).

    Потом возможно сетевые операции, и что-то вроде "функций" - отдельные редактируемые конструкции, которые можно будет использовать как самостоятельные блоки.

    • Нравится 1

  17. Итак, проблема была локализована и устранена.

    Всем просьба перекачать программу по ссылке в первом посте.

     

     

    Я даже не знаю .jar это исполняемый файл или нет. Но у меня он не запускается.

    Отпишитесь у кого эта прога заработала вообще.

     

    Формат JAR - это исполняемый файл Java. В большинстве операционных систем может быть запущен двойным кликом.

    Если по какой-либо причине он не запускается, советую создать файлик run.bat с таким кодом (для Windows):

    java -jar <название файлика>.jar
    pause
    

    Запуск этого скрипта, позволит увидеть вывод программы в консоль и возможно - код ошибки.

    Отмечу также, что программа из данной темы требует версию Java 8.


  18. Win7 x64 не пашет, жава последняя.

     

    То же самое что и у Doob. Не пашет.

     

    Прошу прощения, возможно глюки конфигурации проекта.

    Запустите через консоль, пожалуйста, и киньте стектрейс ошибки на pastebin.com

×
×
  • Создать...