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

[Java 8] O-Blocks IDE - визуальное программирование роботов

Рекомендуемые сообщения

Вот такой исходник сгенерится:

посмотрел на код и на "осьминога",  и начал сомневаться, что же все-таки проще понять новичку, первое или второе :D

 

П.С. Интересно было бы увидеть копалку ProShow в этой программке. Какое там получится существо=)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

посмотрел на код и на "осьминога",  и начал сомневаться, что же все-таки проще понять новичку, первое или второе :D

 

П.С. Интересно было бы увидеть копалку ProShow в этой программке. Какое там получится существо=)

 

Да вот я тоже сомневаюсь. Надо сделать редизайн и ребрендинг  :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я тут тоже "копалку" делаю.Скоро выложу,посмотрим на код)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Прикольно получилось. Графонистая такая, все на высшим уровне) но чет мне не зашло. Лично мне, проще написать код в Sublim'е, чем разбираться в детской 'поигрульке'. Хотя для новичков - будет полезно. Win10 64-bit, java: Version 8, Update 111. - робит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если будет время, на праздниках немного поработаю над понятностью и простотой.

Ещё будет така фишка как кастомные блоки. Можно будет нарисовать схемку и запечь её в свой блок. А потом использовать везде.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

"Помогите. Я тут что-то тыкнул, а оно само сломалось. Что делать?"

 

le1gNEh.png

WbA6Pad.png

java.lang.NullPointerException
	at moonlightowl.openblocks.io.JSON.recreate(JSON.java:105)
	at moonlightowl.openblocks.OpenBlocks.load(OpenBlocks.java:399)
	at moonlightowl.openblocks.OpenBlocks.openProject(OpenBlocks.java:423)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at sun.reflect.misc.Trampoline.invoke(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at sun.reflect.misc.MethodUtil.invoke(Unknown Source)
	at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1771)
	at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657)
	at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
	at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
	at javafx.event.Event.fireEvent(Event.java:198)
	at javafx.scene.control.MenuItem.fire(MenuItem.java:462)
	at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.doSelect(ContextMenuContent.java:1405)
	at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.lambda$createChildren$343(ContextMenuContent.java:1358)
	at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
	at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
	at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
	at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
	at javafx.event.Event.fireEvent(Event.java:198)
	at javafx.scene.Scene$MouseHandler.process(Scene.java:3757)
	at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485)
	at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
	at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494)
	at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:381)
	at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
	at java.security.AccessController.doPrivileged(Native Method)
	at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$354(GlassViewEventHandler.java:417)
	at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
	at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:416)
	at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
	at com.sun.glass.ui.View.notifyMouse(View.java:937)
	at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
	at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
	at java.lang.Thread.run(Unknown Source)

 


"Ну и не сильно хотелось"

 

NcRDxqt.pngiIwPCrZ.png


"Ожидания - Реальность"

Действие -- Ожидание -- Реальность

ctrl + S -- сохранить файл -- двинуть полотно вверх

ctrl + shift + S -- сохранить файл как ... -- двинуть полотно вверх

ctrl + W -- закрыть файл -- двинуть полотно вниз

ctrl + A -- выделить всё (двинуть полотно влево) -- выделить всё  ?????????????????

ctrl + ПКМ -- копировать элемент -- nope
ПКМ + del -- удалить элемент -- активировать корзину
scroll -- сдвинуть полотно -- изменить масштаб

ctrl + [+-] -- изменить масштаб -- nope
ctrl + F -- поиск элемента -- nope
ПКМ -- выделить элемент -- nope
ЛКМ -- получить выпадающий список -- nope
соединение "портов" -- один драйвер (вывод) много буфферов (вход) -- много драйверов один буффер
ПКМ на порт -- получить список проводников и достать нужные -- достать только все
ПКМ и удержание на пустом месте -- движение полотна -- nope

 


Резюме

  • классная идея
  • нет документации и вообще какого-либо описания. А в таком проекте это самое важное, так как человек, который хочет использовать этот способ написания программ, может совершенно не знать, что такое программирование и с чем его едят.
    • Я 10 мин рисовал "Hello world", при этом заглядывая в код, который генерирует программа, иначе бы мог провозится гораздо дольше.
  • отсутствует многоуровневое описание
  • баги, много багов
    • выделение работатет только от верхнего левого к нижнему правому углу
    • фигня какая-то с проводничками, путаются и не хотят расутываться, улетают в космос
    • создаёт битые файлы
    • можно графически описать не синтезируемый алгоритм
    • создаются пременные, которые нельзя переиспользовать
    • ...

ps. почитай про: control flow graph и control flow analysis

Изменено пользователем Seryoga

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@@Seryoga, охрененный фидбек. А джва года такого ждал.  :D

 

Всё справедливо. Там надо передизайнить, отрефакторить, отдебажить и допилить всё. Я если честно начал забывать уже про этот проект.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


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