Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

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

> Без описания
Kibor
Отправлено: 08 Мая, 2021 - 13:46:23
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




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

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

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

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

 
 Top
Kibor
Отправлено: 12 Мая, 2021 - 23:35:37
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Обновил.
Сделал правильное создание кода в блоках {}

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

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

Такая схема найдет указанное количество изображений и в цикле 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]
 
 Top
Kibor
Отправлено: 13 Мая, 2021 - 04:04:01
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Немного оптимизировал.

Теперь генерирует такой код:
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:;
}
 
 Top
Kibor
Отправлено: 13 Мая, 2021 - 16:01:41
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




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

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



Полный генерируемый код:
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;
}
 
 Top
Kibor
Отправлено: 13 Мая, 2021 - 20:14:17
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Ознакомительное видео о новом редакторе.

 
 Top
sedoi
Отправлено: 13 Мая, 2021 - 22:00:17
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 47
Дата рег-ции: Апр. 2016  
Репутация: 1




Ознакомительное видео о новом редакторе.


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

(Отредактировано автором: 13 Мая, 2021 - 22:01:32)

 
 Top
Kibor
Отправлено: 13 Мая, 2021 - 22:03:33
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




sedoi , Спасибо.
Это пока нигде не работает. Не подключено.
 
 Top
sedoi
Отправлено: 13 Мая, 2021 - 22:29:35
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 47
Дата рег-ции: Апр. 2016  
Репутация: 1




Спасибо.
Это пока нигде не работает. Не подключено.

Ясно, а то я думал только в 10ке не работает. А как же удалять блоки? если к примеру сейчас пишу и нужно блок удалить, полностью очищать все что написано уже?
 
 Top
Kibor
Отправлено: 13 Мая, 2021 - 22:45:55
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Программа пока не готова к конкретному использованию, так как не описана полностью структура данных. Они могут меняться. Поэтому то что сейчас напишите и сохраните возможно потребуется корректировать. Хотя это не сложно сделать с таким форматом сохранения.
Пока что ищутся баги) Которых достаточно) Ну и юзабилити оценивается..
 
 Top
sedoi
Отправлено: 13 Мая, 2021 - 22:55:20
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 47
Дата рег-ции: Апр. 2016  
Репутация: 1




Программа пока не готова к конкретному использованию, так как не описана полностью структура данных. Они могут меняться. Поэтому то что сейчас напишите и сохраните возможно потребуется корректировать. Хотя это не сложно сделать с таким форматом сохранения.
Пока что ищутся баги) Которых достаточно) Ну и юзабилити оценивается..

Понял, после выхода релиза, вообще будет огонь прога. Все супер, удобно в разы, не нужно больше переписывать блоки при переносе не нужно снова делать связи и прочие мелочи, которые в старом забирали уйму времени, надеюсь и собираться код будет намного быстрее чем в старом редакторе, маленькие проги норм собирались, а вот более или менее проги нужно было минут по 10 ждать пока код соберет.
 
 Top
Страниц (18): В начало « 10 11 12 13 [14] 15 16 17 18 »
Сейчас эту тему просматривают: 7 (гостей: 7, зарегистрированных: 0)
« Тестирование Кибор »


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




Powered by