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


Фотография

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


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 47

#31 Оффлайн   Totoro

Totoro
  • Автор темы
  • Хранители Кода
  • Сообщений: 1 734
  • Уровень сигнала: 0,3%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 29 Ноябрь 2015 - 11:40

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

 

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

 

ocb-programm0.png

 

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

 

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

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

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


  • NEO это нравится

#32 Оффлайн   Doob

Doob
  • Пользователи
  • Сообщений: 814
  • Уровень сигнала: 19,57%
  • В игре: 146 час. 10 мин.

Награды

                                   

Отправлено 29 Ноябрь 2015 - 11:56

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

Главное, чтобы оно работало, а как оно будет работать это дело десятое :)


  • lokin135 это нравится

#33 Оффлайн   Totoro

Totoro
  • Автор темы
  • Хранители Кода
  • Сообщений: 1 734
  • Уровень сигнала: 0,3%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 29 Ноябрь 2015 - 16:42

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

 

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] --


#34 Оффлайн   Totoro

Totoro
  • Автор темы
  • Хранители Кода
  • Сообщений: 1 734
  • Уровень сигнала: 0,3%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 02 Декабрь 2015 - 22:52

io.png

-- [OcBlocks v0.22a generated code] --
local robot = require('robot')
local a = io.read()
print(a)
os.exit()
-- [The END] --

  • Alex, Fingercomp, Ktlo и еще 1 это нравится

#35 Оффлайн   Totoro

Totoro
  • Автор темы
  • Хранители Кода
  • Сообщений: 1 734
  • Уровень сигнала: 0,3%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 20 Декабрь 2015 - 16:52

Теперь на 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] --

  • Alex, Fingercomp, Mecopy6ka и 3 другим это нравится

#36 Оффлайн   ECS

ECS
  • Гуру
  • Сообщений: 203
  • Уровень сигнала: 0,56%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 17 Январь 2016 - 20:59

e6a8a2012d2c2a033bcb0d6600c4894a.png

 

122a4c356130c2cece027bb39401749b.png

 

 

По логике программа спрашивает, стоит ли какой-то блок перед роботом. Если блок есть, то сначала выполняется robot.swing() и двигается вперед, а если нет, то робот просто двигается вперед. Сгенерировался какой-то непонятный код, явно несоответствующий моей логике хд



#37 Оффлайн   Totoro

Totoro
  • Автор темы
  • Хранители Кода
  • Сообщений: 1 734
  • Уровень сигнала: 0,3%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 17 Январь 2016 - 22:22

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] --

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



#38 Оффлайн   ECS

ECS
  • Гуру
  • Сообщений: 203
  • Уровень сигнала: 0,56%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 18 Январь 2016 - 01:19

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

 

А, вот оно как. Пасиба. 



#39 Оффлайн   ProShow

ProShow
  • Пользователи
  • Сообщений: 14
  • Уровень сигнала: 1,79%
  • В игре: 13 час. 21 мин.

Отправлено 02 Май 2017 - 19:10

Извини за назойливость, но так как в чате история храниться не долго, а мне надо тикать, то оставляю вопрос здесь:
 

Решил я сделать цикл, который проверяет, есть ли впереди блок. Если да - уничтожить и двигаться дальше, если нет - сразу двигаться дальше. В чём проблема: Я не пойму как вернуться обратно. Он просто прекращает цикл после проверки. Делает как надо, а потом стопорится и пишет, что закончил. Такие дела. Говнокод прилагаю: 90b6db9b2eab47319675f3e7ff4252a6.png



#40 Оффлайн   Totoro

Totoro
  • Автор темы
  • Хранители Кода
  • Сообщений: 1 734
  • Уровень сигнала: 0,3%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 02 Май 2017 - 21:12

Если рассуждать логически. Здесь всё выполняется по линиям.

 

У цикла есть две ветки - ветка "плюс" и метка "минус".

По ветке "плюс" программа идёт когда цикл активен, а по ветке "минус" - когда он завершился.

 

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

 

Пример:

 

iE5Dd9L.png

Выполняется этот осьминог так:

1) Программа заходит в цикл

2) Цикл повторился 0 раз. Надо 10. Значит цикл активен. Значит идём по "плюсу".

3) Печатаем номер попытки в консоль

4) Возвращаемся к началу

5) Цикл повторился 1 раз. Надо 10. Идём по "плюсу".

....

31) Цикл повторился 10 раз. Цикл завершён, идем по "минусу".

32) Конец программы

 

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

-- [OcBlocks v0.3a generated code] --
local a = '10'
local robot = require('robot')
for c = 1, tonumber(a) do
  print(c)
end
-- [The END] --

  • Alex это нравится

#41 Оффлайн   Alex

Alex
  • Администраторы
  • Сообщений: 3 735
  • Уровень сигнала: 52,61%
  • В игре: 392 час. 51 мин.

Награды

                 

Отправлено 02 Май 2017 - 23:18

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

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

 

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


  • Totoro, eu_tomat, HixOff и еще 1 это нравится

#42 Оффлайн   ProShow

ProShow
  • Пользователи
  • Сообщений: 14
  • Уровень сигнала: 1,79%
  • В игре: 13 час. 21 мин.

Отправлено 03 Май 2017 - 00:57

Пасибки. 



#43 Оффлайн   Totoro

Totoro
  • Автор темы
  • Хранители Кода
  • Сообщений: 1 734
  • Уровень сигнала: 0,3%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 03 Май 2017 - 01:53

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

 

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

 

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



#44 Оффлайн   AlexCat

AlexCat
  • Пользователи
  • Сообщений: 24
  • Уровень сигнала: 8,4%
  • В игре: 62 час. 45 мин.
  • ГородСеление диких поедателей колбасы

Отправлено 03 Май 2017 - 18:12

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



#45 Оффлайн   lokin135

lokin135
  • Пользователи
  • Сообщений: 52
  • Уровень сигнала: 89,41%
  • В игре: 667 час. 39 мин.
  • ГородПсков

Награды

           

Отправлено 03 Май 2017 - 23:21

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



#46 Оффлайн   Totoro

Totoro
  • Автор темы
  • Хранители Кода
  • Сообщений: 1 734
  • Уровень сигнала: 0,3%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 04 Май 2017 - 14:35

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

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



#47 Оффлайн   Seryoga

Seryoga
  • Пользователи
  • Сообщений: 108
  • Уровень сигнала: 0,34%
  • В игре: 2 час. 33 мин.
  • ГородSaint-Petersburg

Награды

        

Отправлено 05 Май 2017 - 00:46

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

Спойлер

"Ну и не сильно хотелось"
Спойлер

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


Резюме

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

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


Сообщение отредактировал Seryoga: 05 Май 2017 - 00:53

  • Totoro это нравится

#48 Оффлайн   Totoro

Totoro
  • Автор темы
  • Хранители Кода
  • Сообщений: 1 734
  • Уровень сигнала: 0,3%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 05 Май 2017 - 01:16

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

 

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

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






Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных