Totoro
-
Публикации
1 950 -
Зарегистрирован
-
Посещение
-
Победитель дней
289
Сообщения, опубликованные пользователем Totoro
-
-
У кого-нибудь есть объяснение такой математике? Турель делает почти полный оборот при перемещении между этими координатами:
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 f180.000008 d -> 180.00002 fТ.е. числа становятся по разную сторону от значения 180.Ну а алгоритм турели в OpenSecurity таков, что не дает ей проходить отметку 180 градусов. Об этов вроде где-то выше qwertyMAN писал.=)-
2
-
-
Теперь надо добавить прогрессбар и картинку с наполняющейся пивной кружкой.
-
2
-
-

Блок проверки только генерит значение. Для того чтобы создать "развилку", надо добавить ромбик-проверку. Оранжевый пунктир показывает, что блок проверки передает с зеленого узла логическое значение.
Синий узел нужен для повторного использования этого значения позднее, если надо.
А выполнение программы всегда идет с зеленого на красный узел.
Код будет выглядеть так:
-- [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] --Не идеал в плане оптимизации, но логику передает верно.
-
Думаю на практике, библиотеку можно свести к функции convert(value: number, to: number). Который будет изредка юзаться для конвертации и вывода результата вычислений в какую-нибудь нужную систему.
Ибо какая к черту разница как оно там под капотом хранится. Конструкция из строк и таблиц не будет эффективнее примитивного типа number.
С точки зрения же получения удовольствия от написания программы, игры с системами счисления, таблицами и языком Луа - вопросов нет, дело хорошее =)
P.S. Гигантскую таблицу в начале можно генерить налету с помощью string.byte и string.char
P.P.S. В доках, лучше вначале писать название переменной, а потом, через двоеточие, тип. Такой стиль используется в большинстве документов. И конструкции типа class DecInteger(string: number) - DecInteger instance изрядно путают. Это строка с названием number или число с названием string?
-
6
-
-
Теперь на O-Blocks можно официально написать свой "хеллоу-ворлд"!

Скачать бесплатно без СМС:
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 полигонов.
На самом деле 12 на "воксель" )
И если Сангар не применял какой-нибудь хитрый алгоритм для упрощения сетки, то в ёлочке их и в самом деле немало.
Хотя и не особенно много, по меркам современных 3D игр.
-
OpenCloud короче.
Вот только нафиг он?
Странно слышать такое от главного идеолога OpenClouds.
-
5
-
-
Сразу прошу помощи, как сделать так чтоб на обоих экранах шло одинаковое изображение.
Попробуй юзать команду gpu.bind(address: string): boolean[, string]
На ум приходит два варианта:
1) Ставишь две видюхи - биндишь каждую к своему монитору и рисуешь.
2) Ставишь одну карту, и биндишь ее поочереди к каждому монитору и рисуешь.
-
2
-
-
Немного критики.
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)
-
Ага, только потом сервер ляжет от количества говнокода.
Не боги горшки обжигают

Одно дело говнокод ради говнокода, другое дело - говнокод в процессе создания чего-то более интересного.
-
1
-
-

-- [OcBlocks v0.22a generated code] -- local robot = require('robot') local a = io.read() print(a) os.exit() -- [The END] ---
4
-
-
-
Небольшое обновление. Запатчил и проапдейтил. Теперь будет запускаться на секунду дольше, это нормально. =)

Скачать
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
-
А то так же можно и назвать громким названием программку для кодового замка ванильной дверцы майна или сканирования коров сканером из ОС-ки на подобии в духе, мол, "Программа Агент Смитт, версия 2.0"

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

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

Несколько веревок на выход я делать не буду, поскольку это создает неоднозначность выполнения. По какой линии должна двинуться программа? По рандомной, или по очереди (по какой очереди?)... Это создает неочевидность и запутанность.
Несколько веревеок на вход я делаю сейчас.
Тут проблема в том, во что это будет экспортировано. То что выше, на скриншоте - по сути цикл while. И по хорошемо должно экспортироваться в него. Однако схема может быть гораздо запутаннее, с несколькими переходами в начало цикла, или даже не только в начало.
Поэтому скорее всего, это все будет экспортировано в виде вермишели с операторами goto. =) Это конечно не радует, и противоречит принципам красивого кода... Но зато в OcBlocks "код" станет красивее и понятнее.
-
1
-
-
Языком бороздить форум все умеют, флаг в руки креатив офф и давай-ка мне за сутки забабахкай Зион.
Нео, так вы этом и суть. Возьми креатив, сингл, где есть все, ничего не лагает, и есть доступ к файлам, модам, сейву в любой момент.
Построй Зион таким как ты его видишь, без лимита на ресурсы, свободно.
А потом К.А. с радостью поможет тебе его "развернуть" на сервере, я уверен в этом на 100%.
-
2
-
-
Я тут полистал свой календарь и обнаружил вопиющую пропажу - исчезли выходные на прошлой неделе.
"Как же так, - подумал я, - ведь я собирался выложить OcBlocks 0.2а в субботу".
Но злодеев найти так и не удалось, поэтому выкладываю программу сегодня.
Среда программирования пополнилась новыми плюшками, и новыми операторами.
Пожалуй лучше всего опишет изменения вот этот скриншот:

Который транслируется в такой код:
-- [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
- Добавлен инструментарий для работы с группами блоков - рамочка для выделения, хоткеи и меню для вырезания, копирования, вставки и удаления.
-
Да, упустил из виду Alert'ы. До версии Java 8u40, они существовали отдельно, в составе большой библиотеки ControlsFX Dialogs. Потом Oracle увидел, что это круто, и прибрал к рукам )
Добавлю уточнение в стартовый пост.
Прикольно. Вот бы иметь возможность как-то влиять на трассы без перемещения блоков. Сложная схема может оказаться плохо читаемой.
Жду циклы и логику.
Есть вариант добавить режим редактирования контрольных точек к "трассам". Тогда можно будет поправить форму.
Либо прямо тасканием за середину линии изменять.
Спасибо всем большое за отзывы и багрепорты! Это воодушевляет писать дальше

Циклы и логика на подходе. К сожалению, времени на все не хватает, поэтому обновление может подзажержаться.
-
Обновил немного билд. Багфиксы и блоки "копать" / "строить". Ссылка в первом посте обновлена.
У меня аналогичный результат
Может такое быть, что у тебя старый билд? Я тестировал последний на Win 7 - все в порядке.
Попробуй вот этот: OcBlocks 0.11a (1.14 Мб)
Также, убедись что запускаешь на Java 8.
Если же ничего не поможет - скинь свой стектрейс ошибки на pastebin, со всеми подробностями (+ конфигурация на которой запускаешь - система, Java, разрядность).
Не хватает передвижения мышкой по рабочему пространству.
Зажми колесико и двигай мышь )
-
1
-
-
А некоторые пытаются послушать число Пи...
Оно красиво звучит.
-
3
-
-
Дима, планируешь ли добавить работу с инвентарем, слотами, или только базовая визуализация движения, логики и циклов для понимания основ новичками?
Работа с инвентарем и слотами разумеется будет.
Однако не сразу, т.к. наряду с логикой, циклами и прочими интересными штуками, потребует проработки.
До этого момента я был больше сосредоточен на интерфейсе приложения, чтобы заложить "каркас" для будущих обновлений.
Примерный "roadmap" есть на Github проекта, в описании.
К следующей версии я прокачаю инструментарий самой IDE, плюс добавлю бинарную логику (условия), и, возможно, элементарное взаимодействие с консолью (ввод / вывод).
Далее последуют циклы, продвинутые действия робота (инвентарь, генераторы всякие).
Потом возможно сетевые операции, и что-то вроде "функций" - отдельные редактируемые конструкции, которые можно будет использовать как самостоятельные блоки.
-
1
-
-
Итак, проблема была локализована и устранена.
Всем просьба перекачать программу по ссылке в первом посте.
Я даже не знаю .jar это исполняемый файл или нет. Но у меня он не запускается.
Отпишитесь у кого эта прога заработала вообще.
Формат JAR - это исполняемый файл Java. В большинстве операционных систем может быть запущен двойным кликом.
Если по какой-либо причине он не запускается, советую создать файлик run.bat с таким кодом (для Windows):
java -jar <название файлика>.jar pause
Запуск этого скрипта, позволит увидеть вывод программы в консоль и возможно - код ошибки.
Отмечу также, что программа из данной темы требует версию Java 8.
-
Win7 x64 не пашет, жава последняя.
То же самое что и у Doob. Не пашет.
Прошу прощения, возможно глюки конфигурации проекта.
Запустите через консоль, пожалуйста, и киньте стектрейс ошибки на pastebin.com
-
Вы считаете, что учить новый язык программирования, ради того, чтобы накопать немного коблы - это overkill?
Вы прочли учебник по Луа и не поняли ни строчки?
Тогда мы идем к вам!

OcBlocks IDE
Используя наглядный и понятный интерфейс, вы можете с легкостью создать программу для робота OpenComputers, не имея необходимости штудировать пыльные тома мануалов (только встроенную справку =)).
Ставьте блоки, соединяйте линиями, сохраняйте в понятный (и в случае крайне нужды - человекочитабельный) JSON формат.
Готовый проект экспортируется в листинг на Луа, который затем может быть помещен в робота, и выполнен.
СкачатьАльфа версия - ранний доступ
OсBlocks - 0.3a (1.1 Mb)
Системные требования
Программа разрабатывается на JavaFX 8, поэтому для запуска вам потребуется Java 8u40 или новее.
Среда кроссплатформенна, и должна запускаться на любой операционной системе с установленной Java 8.
Тестировалось на Debian 9 и Win7.
Справка
Доступные на данный момент блоки разположены на четырех панелях инструментов внизу.
Панели открываются нажатием на кнопку в панели, либо на цифровые клавиши 1-4.
Левая кнопка мыши - ставить блоки.
Правая - отменить выбранный инструмент.
Скролл колесиком - зум.
Нажатие колесика - перемещение по воркспейсу.
Стрелки или WASD - перемещение по воркспейсу
Delete - удалить выделенные блоки, либо включить инструмент "корзина"
Shift - клик по ноде с зажатым Shift "берет" линию ноды, при этом не бросая уже взятые (добавляет к взятым)
Ctrl + A - выделить все блоки
Ctrl + X / C / V - вырезать, копировать и вставить соответственно
Escape - положить выбранный инструмент (эквивалентно ПКМ)
Разработка
На данный момент, программа находится в активной разработке. Вы можете принять участие, отправить пулл реквест, или открыть issue с баг-реквестом или предложением функционала.
Репозиторий программы:
https://github.com/MoonlightOwl/O-Blocks
Добро пожаловать и удачи в программировании! =)
-
16
-


Hologram Editor [OpenComputers]
в Графика
Опубликовано:
1) Собрать компьютер удовлетворяющий этим требованиям: http://computercraft.ru/topic/259-hologram-editor-opencomputers/?p=2814
2) Установить на него OpenOS с дискетки.
3) Скачать программу. Для этого надо набрать в консоли команду: pastebin get tdxECas7 holo
После этого программа окажется в корневом каталоге жесткого диска в файлике под названием holo.
Ее можно будет запустить набрав команду holo.