Кибор » Кибор - Интегрированная среда разработки ботов » Тестирование Кибор » Новый Визуальный редактор

Страниц (18): В начало « ... 10 11 12 13 [14] 15 16 17 18 »
 

131. Kibor - 08 Мая, 2021 - 05:46:23 - перейти к сообщению
Обновил.
При изменение размера блока связи подстраиваются.
Связи стараются не налипать друг на друга, но если при уменьшение блока им нет места они накладываются в одну точку. На работу не влияет.

Для изменения размера блока зажать Шифт и менять размер блока за его ребро.
Для того что бы проходить связями сквозь проходной блок For надо зажать контрол и потом вести связь.

Поправил линии связей. Стали более плавными, без особых зигзагов.
Поправил внешний вид. Теперь схема более читабельна и похожа на блок схему. Так же при масштабирование меняются некоторые размеры, что бы не было налипаний при малом масштабе.

Собственно по части построения блок схем почти все работает.

132. Kibor - 12 Мая, 2021 - 15:35:37 - перейти к сообщению
Обновил.
Сделал правильное создание кода в блоках {}

Временно убрал сортировку и в коде много Гото и меток, но код в блоках {} генерируется правильно и вполне рабочий.

Имена переменных можно изменять по своему усмотрению в диалоговых окнах настроек блоков и он будут объявлены автоматически. Можно использовать разные имена для разных блоков.

Такая схема найдет указанное количество изображений и в цикле for перещелкает их.



Код который на данный момент генерирует:
CODE:
#define NULL 0

int K_kib;
int X_Kib[1000];
int Y_kib[1000];
int Image0[12][14];
int N;

external(INT, "MessageBoxA", "MessageBoxA", "user32.dll");

loadimage(#Image0[0][0], "C:\Image_0.bmp");

KIB_0: if (FindImage(#Image0[0][0], 3, #K_kib, #X_Kib[0], #Y_kib[0], 20, 20, 1024, 768)>0) goto KIB_1;
goto KIB_3;
KIB_1: for(N=0; N<K_kib; N++)
{
goto KIB_2;
KIB_2: Mouse(0, 20+X_Kib[N], 20+Y_kib[N], 0, 1000); goto KIB_C1;
KIB_C1:;
}
goto KIB_Exit;
KIB_3: MessageBoxA(NULL, "Не найдено", "Заголовок", NULL); goto KIB_Exit;
KIB_Exit:;

function FindImage(int #image, int kol, int #mK, int #mX, int #mY, int ex1, int ey1, int ex2, int ey2)
{
mK=findimage(kol, #image[0][0], -1, #mX[0], #mY[0], ex1, ey1, ex2, ey2, -1);
return mK;
}

function Mouse(int p1, int x, int y, int m, int p2)
{
pause(p1);
if (m==0)mouse(LEFT, x, y);
if (m==1)mousedown(LEFT, x, y);
if (m==2)mouseup(LEFT, x, y);
pause(p2);
}


Допускается любая комбинация вложенных блоков {}

К примеру такая схема должна генерировать правильный, запускаемый код:



Шаблон for
CODE:
[INTERFACE]
DIALOG, "for", 619, 109;
STATIC, "Имя переменной", 8, 4, 92, 20;
EDIT, 108, 4, 100, 20, int Var;
STATIC, "Начальное значение", 8, 28, 108, 20;
EDIT, 120, 28, 72, 20, int Init;
STATIC, "Условие", 200, 28, 44, 20;
EDIT, 248, 28, 232, 20, int Cond;
STATIC, "Счетчик", 488, 28, 44, 20;
EDIT, 536, 28, 72, 20, int Counter;
BUTTON_OK, "Принять", 400, 56, 100, 20;
BUTTON_CANCEL, "Закрыть", 508, 56, 100, 20;
[END]

[APPEARANCE]
COLOR = 0, 0, 0;
SIZE_X = 48;
SIZE_Y =28;
[END]

[ASSOC_VAR]
Var = N;
Init = 0;
Cond = N<5;
Counter = N++;

cInit = ~Var~=~Init~;
[END]

[GLOBAL_VAR]
int ~Var~;
[END]

[CALL]
(cInit; Cond; Counter)
[END]

[GROUP_BLOCK]
START = {
END = }
ENTER_EXIT =1
CONNECTION=1
[END]


Шаблон while
CODE:
[INTERFACE]

DIALOG, "while", 306, 81;

STATIC, "Условие", 8, 4, 44, 20;

EDIT, 64, 4, 232, 20, int Cond;

BUTTON_OK, "Принять", 88, 32, 100, 20;

BUTTON_CANCEL, "Закрыть", 196, 32, 100, 20;

[END]

[APPEARANCE]
COLOR = 0, 0, 0;
SIZE_X = 18;
SIZE_Y =22;
[END]

[ASSOC_VAR]
Cond = 1==1;
[END]

[CALL]
(Cond)
[END]

[GROUP_BLOCK]
START = {
END = }
[END]


Шаблон loop
CODE:
[INTERFACE]

DIALOG, "loop", 299, 80;

STATIC, "Циклов", 8, 4, 92, 20;

EDIT, 108, 4, 176, 20, unknown Loop;

BUTTON_OK, "Принять", 76, 32, 100, 20;

BUTTON_CANCEL, "Закрыть", 184, 32, 100, 20;

[END]

[APPEARANCE]
COLOR = 0, 0, 0;
SIZE_X = 100;
SIZE_Y =46;
[END]

[ASSOC_VAR]
Loop=;
[END]

[CALL]
(Loop)
[END]

[GROUP_BLOCK]
START = {
END = }
[END]


Шаблон Function
CODE:
[INTERFACE]

DIALOG, "Функция", 525, 116;

STATIC, "Имя функции", 8, 8, 72, 20;

EDIT, 88, 8, 424, 20, string Fun;

STATIC, "Параметры", 8, 36, 72, 20;

EDIT, 88, 36, 424, 20, unknown Par;

BUTTON_OK, "Принять", 304, 64, 100, 20;

BUTTON_CANCEL, "Закрыть", 412, 64, 100, 20;

[END]

[APPEARANCE]
COLOR = 193, 97, 0;
SIZE_X = 48;
SIZE_Y =28;
[END]

[ASSOC_VAR]
Fun = NameFun;
Fun_V= function ~%32~ ~Fun~;
Par=int~%32~A,~%32~int~%32~B;
[END]

[CALL]
Fun_V ( Par )
[END]

[GROUP_BLOCK]
START = {
END = }
ENTER_EXIT =0
CONNECTION=0
[END]
133. Kibor - 12 Мая, 2021 - 20:04:01 - перейти к сообщению
Немного оптимизировал.

Теперь генерирует такой код:
CODE:
if (FindImage(#Image0[0][0], 1, #K_kib, #X_Kib[0], #Y_kib[0], 0, 0, 1024, 768)>0) goto KIB_1;
goto KIB_3;
KIB_1: for(N=0; N<K_kib; N++)
{
Mouse(0, 20+X_Kib[N], 20+Y_Kib[N], 0, 1000);
}
goto KIB_Exit;
KIB_3: MessageBoxA(NULL, "Íå íàéäåíî", "Çàãîëîâîê", NULL); goto KIB_Exit;
KIB_Exit:;


Вместо такого
CODE:
KIB_0: if (FindImage(#Image0[0][0], 3, #K_kib, #X_Kib[0], #Y_kib[0], 20, 20, 1024, 768)>0) goto KIB_1;
goto KIB_3;
KIB_1: for(N=0; N<K_kib; N++)
{
goto KIB_2;
KIB_2: Mouse(0, 20+X_Kib[N], 20+Y_kib[N], 0, 1000); goto KIB_C1;
KIB_C1:;
}
goto KIB_Exit;
KIB_3: MessageBoxA(NULL, "Не найдено", "Заголовок", NULL); goto KIB_Exit;
KIB_Exit:;




С этой схемы получает такой код
CODE:
FindHeapcolor(#Color0[0], #Kol0[0], 2, 2, #X, #Y);
loop(5)
{
goto KIB_15;
KIB_7: FindHeapcolor(#Color0[0], #Kol0[0], 2, 2, #X, #Y);
KIB_8: MessageBoxA(NULL, "Это функция", "Заголовок", NULL); goto KIB_C5;
KIB_15: for(A=0; A<5; A++)
{
goto KIB_16;
KIB_12: if (FindImage(#Image0[0][0], 1, #K_kib, #X_Kib[0], #Y_kib[0], 0, 0, 1024, 768)>0) goto KIB_4;
goto KIB_8;
KIB_4: ReadText("C:\basetext.sib", #Text, 1, 0, 0, 0); goto KIB_C15;
KIB_16: while(1==1)
{
Proc=OpenProcess(#win0);
Rez=test(#win0);
}
goto KIB_12;
KIB_C15:;
}
goto KIB_13;
KIB_C5:;
}
goto KIB_18;
KIB_13: while(2==2)
{
FindImage(#Image0[0][0], 1, #K_kib, #X_Kib[0], #Y_kib[0], 0, 0, 1024, 768);
}
goto KIB_7;
KIB_18: Rez=test(#win0); goto KIB_Exit;
KIB_Exit:;


function NameFun(int A, int B)
{
goto KIB_3;
KIB_17: ReadText("C:\basetext.sib", #Text, 1, 0, 0, 0); goto KIB_C11;
KIB_3: for(B=0; B<5; B++)
{
goto KIB_10;
KIB_2: Rez=test(#win0); goto KIB_C3;
KIB_10: while(3==3)
{
Rez=test(#win0);
}
goto KIB_2;
KIB_C3:;
}
goto KIB_17;
KIB_C11:;
KIB_Exit:;
}
134. Kibor - 13 Мая, 2021 - 08:01:41 - перейти к сообщению
Обновил.
Доработал генератор кода.
Теперь код вполне себе читабелен.
Гото не так много. В блоках {} код сортируется вполне прилично.

Такой код получается с такой схемы. (все блоки расставлены хаотично и созданы не по порядку)



Полный генерируемый код:
CODE:
#define NULL 0

int Color0[2] = {0,5};
int Kol0[2] = {2,2};
int X;
int Y;
win win0 = window("Калькулятор","CalcFrame",-1);
int Proc;
int B;
string Text;
int K_kib;
int X_Kib[1000];
int Y_kib[1000];
int Image0[12][14];
int Rez;
int A;
win win1 = window("Кор","Ca",-1);
int AAAAA;

external(INT, "MessageBoxA", "MessageBoxA", "user32.dll");

loadsymbolbase("C:\basetext.sib");
loadimage(#Image0[0][0], "C:\Image_0.bmp");

FindHeapcolor(#Color0[0], #Kol0[0], 2, 2, #X, #Y);
loop(5)
{
goto KIB_15;
KIB_21: Rez=test(#win0);
KIB_8: MessageBoxA(NULL, "Это функция", "Заголовок", NULL);
while(55==55)
{
Proc=OpenProcess(#win0);
}
goto KIB_C5;
KIB_15: for(A=0; A<5; A++)
{
goto KIB_16;
KIB_4: ReadText("C:\basetext.sib", #Text, 1, 0, 0, 0);
goto KIB_C15;
KIB_16: while(1==1)
{
Proc=OpenProcess(#win0);
Rez=test(#win0);
}
if (FindImage(#Image0[0][0], 1, #K_kib, #X_Kib[0], #Y_kib[0], 0, 0, 1024, 768)>0) goto KIB_4;
goto KIB_8;
KIB_C15:
}
while(2==2)
{
FindImage(#Image0[0][0], 1, #K_kib, #X_Kib[0], #Y_kib[0], 0, 0, 1024, 768);
}
if (FindHeapcolor(#Color0[0], #Kol0[0], 2, 2, #X, #Y)>0) goto KIB_21;
goto KIB_8;
KIB_C5:
}
AAAAA=test(#win1);
goto KIB_Exit;
KIB_Exit:;

function NameFun(int A, int B)
{
for(B=0; B<5; B++)
{
while(3==3)
{
Rez=test(#win0);
}
test(#win0);
}
ReadText("C:\basetext.sib", #Text, 1, 0, 0, 0);
goto KIB_Exit;
KIB_Exit:;
}

function FindHeapcolor(int #col, int #kol, int k_col, int k_kol, int #x, int #y)
{
return findheapcolor(1, #col[0], #kol[0], k_col, k_kol, #x, #y, 15, 15, 50, 50, 0, 0, 1000, 1000, -1);
}

function OpenProcess(win #w)
{
return openprocess(w);
}

function test(win #w)
{
return openprocess(w);
}

function ReadText(string base, string #text, int g1, int g2, int g3, int g4)
{
disablesymbolbase(ALL);
enablesymbolbase(base);
int G=0;
if (g1)G=G+RU;
if (g2)G=G+EN;
if (g3)G=G+NUM;
if (g4)G=G+MARK;
readtext (G, #text, 8, 1, -1, -1, -1, -1, -1, 0, -1, 73, 78, 77, 81, -1);
}

function FindImage(int #image, int kol, int #mK, int #mX, int #mY, int ex1, int ey1, int ex2, int ey2)
{
mK=findimage(kol, #image[0][0], -1, #mX[0], #mY[0], ex1, ey1, ex2, ey2, -1);
return mK;
}
135. Kibor - 13 Мая, 2021 - 12:14:17 - перейти к сообщению
Ознакомительное видео о новом редакторе.

136. sedoi - 13 Мая, 2021 - 14:00:17 - перейти к сообщению
Ознакомительное видео о новом редакторе.


Доброго времени, в новом редакторе в Виндовс 10 не работает удаление блока, кнопка очистить работает, а если начинаешь удалять не нужный блок, то на кнопку удалить не реагирует,блок не удаляется.
137. Kibor - 13 Мая, 2021 - 14:03:33 - перейти к сообщению
sedoi , Спасибо.
Это пока нигде не работает. Не подключено.
138. sedoi - 13 Мая, 2021 - 14:29:35 - перейти к сообщению
Спасибо.
Это пока нигде не работает. Не подключено.

Ясно, а то я думал только в 10ке не работает. А как же удалять блоки? если к примеру сейчас пишу и нужно блок удалить, полностью очищать все что написано уже?
139. Kibor - 13 Мая, 2021 - 14:45:55 - перейти к сообщению
Программа пока не готова к конкретному использованию, так как не описана полностью структура данных. Они могут меняться. Поэтому то что сейчас напишите и сохраните возможно потребуется корректировать. Хотя это не сложно сделать с таким форматом сохранения.
Пока что ищутся баги) Которых достаточно) Ну и юзабилити оценивается..
140. sedoi - 13 Мая, 2021 - 14:55:20 - перейти к сообщению
Программа пока не готова к конкретному использованию, так как не описана полностью структура данных. Они могут меняться. Поэтому то что сейчас напишите и сохраните возможно потребуется корректировать. Хотя это не сложно сделать с таким форматом сохранения.
Пока что ищутся баги) Которых достаточно) Ну и юзабилити оценивается..

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

Powered by ExBB FM 1.0 Final