Войти
ПрограммированиеФорумГрафика

Визуализация программирования. (3 стр)

Страницы: 1 2 3 4 Следующая »
#30
0:08, 18 янв. 2019

gudleifr
И что дальше? К чему ты это все написал?


#31
0:26, 18 янв. 2019

san
> Короче тут я застрял. Ничего путное в голову не приходит.
> Может помощь клуба может предложить что-то интересное?
  Попытайся представить свою программу в виде ленты с дырками

#32
(Правка: 1:04) 1:03, 18 янв. 2019

san
> И что дальше?
Ну, как бы, если Вы не поняли "к чему я все это написал", то - ничего.
Правда, я подозреваю, что Вы просто не поняли "что" я написал, а не "к чему"...
Короче, не берите в голову.

#33
10:37, 18 янв. 2019

san
если ты не ожидаешь от игроков осмысленного программирования, то спрячь от них смысл вообще. Сделай какой-нибудь генератор кода для фракталов, и подбери ему основные параметры так, чтобы получались красивые фракталы. А результаты "махания руками" игроков используй как seed для генераторов случайных чисел в алгоритме, для подгонки менее важных параметров алгоритма, которые будут давать разнообразие итоговым фракталам.
Игроки тасуют туда-сюда цветастые блестящие камешки, в результате фрактальный мир каким-то образом меняется. Игроки довольны, несут бабло.

Циклы и условия можно тупо задать как камешки в цепочке, для цикла 4 камешка: начало условия "if(", начало тела "){", альтернативная ветка "}else{" и конец цикла "}". Игрок расставляет камешки как попало, а ты у себя "компилируешь", если получается синтаксически верный цикл, то используешь его, если получается бред, то просто игнорируешь камешки циклов и делаешь остальные одиночные команды в цепочке. Можно кстати синтаксически верные камешки подсвечивать, сделать чтобы они как-то сверкали, показывать что так "правильно". А при ошибке в синтаксисе "гасить" камни, убирать блеск.
Цикл можно похоже сделать, просто камешки-разделители, а между ними - условие и тело цикла.

Или можно пойти дальше, в 2д пространстве ставить 3 камешка - условие, тело, альтернативное тело. И подсвечивать вокруг этих камней другие камни с каким-то радиусом. Те другие камни-команды, которые попали в радиус подсветки, становятся телом или условием для этого "блока условия" из 3х камней. И чтобы такие группы трёх-камневые можно было несколько на поле добавлять.

#34
(Правка: 22 янв. 2019, 7:25) 21:35, 18 янв. 2019

soflot
> если ты не ожидаешь от игроков осмысленного программирования, то спрячь от них смысл вообще.

Ну не так радикально... Я хочу спрятать программирование как нечто требующее специальных знаний, но не смысл как таковой. Юзер после нескольких экспериментов может заметить связь между своими действиями и их результатом и в дальнейшем действовать уже более-менее осмысленно. Собственно я сам так и пишу эти шейдера. Как я уже говорил, никакой теории 3Д фракталов не существует, работа идет практически методом тыка. И если бы бы у меня были только линейные алгоритмы, то все было бы просто. Сложности начинаются когда я пытаюсь изобразить петли (циклы). Собственно представить их несложно, но одна петля со счетчиком повторов не годится (я выше обьяснял почему), а десяток петлей выглядят весьма уродливо.  На бумаге с текстом или блок-схемой алгоритм выглядит просто, но переход его в "реальный мир" разрушает эту простоту нафиг.

Короче пока я стал изображать последовательность функций в виде сфер соединенных трубами. Типовой алгоритм при этом превратился в десяток параллельных "трубопроводов" с несколькими шарообразными резервуарами в каждой ветке. Потом туда добавятся вертикально стоящие "ректификационные колонны" и пульт управления с несколькими кнопками и циферблатами. Вобщем это весьма напоминает компрессорную станцию "Северного потока":
 
газпром | Визуализация программирования.

Все бы ничего, но вся эта нефтехимия вступает в явный когнитивный диссонанс с изначальным дизайном средневековой алхимической лаборатории. Конечно я могу радикально сменить дизайн и назвать аппликацию "Газпром Создает Новую Реальность", но боюсь на народ не поймет иронию. :)

Может быть стоит все же использовать колбы и бутылки, но соединить их трубками снизу, тогда они хоть в глаза лезть не будут.  Но тогда вертикально стоящие "условия" непонятно как изображать. Вобщем я пока думаю.

#35
(Правка: 20 янв. 2019, 7:18) 21:05, 19 янв. 2019

В конце концов я пришел к выводу, что лучше всего для этой задачи подходят кубики. И просто и наглядно. Вот что получилось:

Это линейный алгоритм:
линейный | Визуализация программирования.

A();  B();  C();  D()  E();
Это с циклом:
array | Визуализация программирования.
A();  B();
for(int i=0 i<4; i++)
{
  C();  D();  E();
}
С условием:
условие | Визуализация программирования.
A();  B();
for(int i=0 i<4; i++)
{
  C();  D();
  if(i==2) 
  {
    F(); G();
  }
  E();
}

Может это и не совсем в стилистике, но всяко лучше компрессорной станции.

#36
(Правка: 21:33) 21:25, 19 янв. 2019

san
Изображение
И это поместить в круг. А круги соединять линией.
Круг как типа функция.

То есть будут круги и в круге имя функции.
А если кликнул на круг то открывается его внутренний код.


А вот не все лучше кубиками делать.
Например переменную кубиком.
Цикл в большие квадратные скобки и с ними рядом число раз. Двойной цикл скобка в скобке будет.
IF ромбом.

То есть разными фигурами разные действия.
Что бы по фигуре сразу понял что делает.

А то если все кубиками то легко запутаться.

А вот трехмерное расположение и вращать всю конструкцию кода. Классная идея.

Прикол в том что ввиде игры тетрис можно генерить код !

#37
(Правка: 13:23) 13:23, 20 янв. 2019

А зачем визуализировать?
Есть блок-схемы, которые должны быть понятны всем даже весьма средним по сообразительности людям.

Вот суть этих кубиков и прочих идей из этой темы гораздо туманнее.
san
> Это с циклом:
>
Например, не вижу тут никакого цикла. Вижу двухмерный массив.

san
> Да и боюсь что дизайнеру трудно будет обьяснить что такое цикл и нафига он
> нужен.
Ну это уже явное преувеличение. Это школьная программа. Тем, кто не знает что такое цикл, ты ничего и кубиками не объяснишь.

#38
13:53, 20 янв. 2019

Как я понимаю ТС наверно для себя делает. Что бы ему было удобно и быстро писать код.
Тогда визуализация уже будет на его вкус.

#39
13:57, 20 янв. 2019

Ну, если для себя, то да. Все средства хороши, если они помогают.
А если не только для себя, то имеет смысл сначала понять нужно оно другим или только хуже делает. А то жалко будет потратить кучу времени на то, что никому в итоге не нужно будет.

#40
18:38, 20 янв. 2019

Dmitrrr
Я не пойму, я же несколько раз обьяснял ЗАЧЕМ это надо и вдруг опять... Почитайте всю ветку а не только последнюю страницу. Мне ВООБЩЕ не нужно программирование, мне нужен наглядный образ который можно конструировать "беря элементы руками" и который можно потом превратить в код 3Д фрактала. Причем этот конструктор максимально упрощенный - без переменных, арифметики, вложенных циклов, рекурсии и собственных функций. Т.е. это не метод программирования а просто интерфейс для создания 3Д фракталов в среде виртуальной реальности, когда у юзера нет ни клавиатуры ни навыков программиста. Можно это назвать визуальным программированием? Можно. Но только для очень узкого круга задач. Но на большее я и не претендую.

#41
3:09, 21 янв. 2019

san
  На кубики приделай точки и станет похоже на ленту

#42
3:22, 21 янв. 2019

whitewolf1
А зачем мне надо, что бы это походило на ленту? Это никоим образом не повысит функциональность. К тому же речь идет о трехмерной фигуре, а не плоской (см. третий рисунок).
Другое дело, что в реальной аппликации кубики будут текстурированные, с символами как-то отражающими их действие. Это позволит быстро запомнить что может делать тот или иной кубик и использовать их более осмысленно.

#43
3:34, 21 янв. 2019

san
А не думаешь ли ты, что в попытке сделать что-то максимально простое и понятное, в результате получится что-то очень сложное и непонятное.

#44
4:51, 21 янв. 2019

Жора Монтировка
Нет не думаю. Ибо если для кого то набор кубиков это слишком сложно, то наверно ему надо серьезно задуматься о состоянии ментального здоровья.

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумГрафика