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

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

 Страниц (9): « 1 2 3 4 5 6 [7] 8 9 »   

> Описание: робот для автоматизации на интернет-странице с флешем
Kibor
Отправлено: 13 Января, 2014 - 18:56:57
Post Id



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


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




 darow пишет:
мне нужно не 2 поиска вести а поочереди, если в К1 не нашло перейти на К2 и тд...


Зачем на каждый поиск дублировать код?
Надо прост использовать массив для смещений и менять индекс в нем для каждого поиска.

 Цитата:
int color, xe, ye;//разрешение экрана
getdisplay(color, xe, ye);//Узнать разрешение экрана

int stvol_X, stvol_Y;// координаты стартовой точки в волейболе
int k1_X[2], k1_Y[2];//координаты начала и конца рамки где искать 1коэф
int Ck1_x, Ck1_y;//координаты найденых цифр 1коэф 3шт
int fl1[10];// флаг, 1 если найдена цифра 1коэф
int rast_k1_x;//растояние от цифры до начала рамки поиска 1коэф

int n;
int CIF;
int X[2], Y[2];
string kf1="";// 1коэф
int z=10;
int razmerX[11];//тут размеры рисунков цифр

int x1=15;
int y1=1;

int Nom_chis=0;
int Sm_chis[2];




Sm_chis[0]=70;
Sm_chis[1]=110;




//Загрузка рисунков
int im_stvol[121][11];
loadimage (#im_stvol[0][0], "C:\citi\Image_ishody po partiyam.bmp");//рис стартовой точки в волейболе

//рис цифр

int ttt[20][20];loadimage (#ttt[0][0], "C:\citi\t.bmp");
int C_0[20][20];loadimage (#C_0[0][0], "C:\citi\0_citi.bmp");
int C_1[20][20];loadimage (#C_1[0][0], "C:\citi\1_citi.bmp");
int C_2[20][20];loadimage (#C_2[0][0], "C:\citi\2_citi.bmp");
int C_3[20][20];loadimage (#C_3[0][0], "C:\citi\3_citi.bmp");
int C_4[20][20];loadimage (#C_4[0][0], "C:\citi\4_citi.bmp");
int C_5[20][20];loadimage (#C_5[0][0], "C:\citi\5_citi.bmp");
int C_6[20][20];loadimage (#C_6[0][0], "C:\citi\6_citi.bmp");
int C_7[20][20];loadimage (#C_7[0][0], "C:\citi\7_citi.bmp");
int C_8[20][20];loadimage (#C_8[0][0], "C:\citi\8_citi.bmp");
int C_9[20][20];loadimage (#C_9[0][0], "C:\citi\9_citi.bmp");

razmerX[0]=imagewidth(#C_0[0][0]);
razmerX[1]=imagewidth(#C_1[0][0]);
razmerX[2]=imagewidth(#C_2[0][0]);
razmerX[3]=imagewidth(#C_3[0][0]);
razmerX[4]=imagewidth(#C_4[0][0]);
razmerX[5]=imagewidth(#C_5[0][0]);
razmerX[6]=imagewidth(#C_6[0][0]);
razmerX[7]=imagewidth(#C_7[0][0]);
razmerX[8]=imagewidth(#C_8[0][0]);
razmerX[9]=imagewidth(#C_9[0][0]);
razmerX[10]=imagewidth(#ttt[0][0]);

a: if (Nom_chis==2)goto er;//Это второе число
if (findimage(1, #im_stvol[0][0], 0, #stvol_X, #stvol_Y, 0, 0, xe, ye, z, z, z, z, z, z, 100, 1, -1)==1)//находим стартовую точку
{

//Ищет левый не белый пиксель в рамке на рисунке
poisk_pix(Sm_chis[Nom_chis]);


X[0]=stvol_X; Y[0]=stvol_Y+38;
X[1]=X[0]+7; Y[1]=Y[0]+13;
int g=0;
kf1="";

lop:

//ищем по 1 цифре в рамке поиска. записываем координаты
if (skan()==1)goto lop;


if (kf1!="")//Число есть
{
if (formatsn(kf1)<=5)
{
beep (1000, 500)
}
}
else//Если не нашли
{
Nom_chis++;
goto a;
}


}
sleep(50);
goto a;

er:;
//////////////////////////////////////////////////////////////


function skan()
{
if (findimage(1, #C_0[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"0"; g=0;
X[0]=X[0]+Ck1_x+razmerX[g];
X[1]=X[0]+7;
return 1;
}
if (findimage(1, #C_1[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"1"; g=1;
X[0]=X[0]+Ck1_x+razmerX[g];
X[1]=X[0]+7;
return 1;
}
if (findimage(1, #C_2[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"2"; g=2;
X[0]=X[0]+Ck1_x+razmerX[g];
X[1]=X[0]+7;
return 1;
}
if (findimage(1, #C_3[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"3"; g=3;
X[0]=X[0]+Ck1_x+razmerX[g];
X[1]=X[0]+7;
return 1;
}
if (findimage(1, #C_4[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"4"; g=4;
X[0]=X[0]+Ck1_x+razmerX[g];
X[1]=X[0]+7;
return 1;
}
if (findimage(1, #C_5[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"5"; g=5;
X[0]=X[0]+Ck1_x+razmerX[g];
X[1]=X[0]+7;
return 1;
}
if (findimage(1, #C_6[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"6"; g=6;
X[0]=X[0]+Ck1_x+razmerX[g];
X[1]=X[0]+7;
return 1;
}
if (findimage(1, #C_7[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"7"; g=7;
X[0]=X[0]+Ck1_x+razmerX[g];
X[1]=X[0]+7;
return 1;
}
if (findimage(1, #C_8[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"8"; g=8;
X[0]=X[0]+Ck1_x+razmerX[g];
X[1]=X[0]+7;
return 1;
}
if (findimage(1, #C_9[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"9"; g=9;
X[0]=X[0]+Ck1_x+razmerX[g];
X[1]=X[0]+7;
return 1;
}
if (findimage(1, #ttt[0][0], -1, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z , 100, 1, -1)==1)
{
kf1=kf1+"."; g=10;
X[0]=X[0]+Ck1_x+razmerX[g];
X[1]=X[0]+7;
return 1;
}
return 0;
}



/////////////



function poisk_pix(int sm)
{
int xn=stvol_X+sm, yn=stvol_Y+38;
int xn1=xn+x1, yn1=yn+y1;
int min=999999;
s: if (xn<xn1)
{
yn=stvol_Y+38;
s1: if (yn<yn1)
{
if (getcolor(xn, yn)!=16777215)
{
if (xn<min){min=xn; stvol_X=xn-2;}
}
yn++;
goto s1;
}
xn++;
goto s;
}

}
 
 Top
darow
Отправлено: 13 Января, 2014 - 19:22:05
Post Id



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


Покинул форум
Сообщений всего: 45
Дата рег-ции: Янв. 2014  
Откуда: Украина
Репутация: 0




так супер, ищет теперь действительно и там и там... но в процессе цикла интересный момент, так как коэф меняются в динамике, то сначала он пищит на 1 кэф и это нормально он по заданию как положено больше2, но далее 1К уменьшается и теперь К2 больше 2, по идее кибор до этого поступал так: пока нет никого больше 2 то просто молчит, как только кэф опять любой больше 2, то опять начинает пикать, сейчас он при переходе че-то замолкает, не циклит он короче при перемене "победителя" приходится по - новой запускать... тогда он опять все видит...
 
 Top
Kibor
Отправлено: 13 Января, 2014 - 19:43:23
Post Id



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


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




Заменить
 Цитата:
if (Nom_chis==2)goto er;//Это второе число

на
 Цитата:
if (Nom_chis==2)Nom_chis=0;//Это второе число


Или вообще его убрать и вставить в это место
CODE:
Nom_chis++;
goto a;

вот так
CODE:
Nom_chis++;
if (Nom_chis==2)Nom_chis=0;
goto a;


Короче следите за логикой и делайте какую именно надо.
 
 Top
darow
Отправлено: 13 Января, 2014 - 20:05:57
Post Id



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


Покинул форум
Сообщений всего: 45
Дата рег-ции: Янв. 2014  
Откуда: Украина
Репутация: 0




что-то всетаки второе число не хочет искать или сравнивать... перепробывал все варианты...
(Добавление)
а что означает эта строка?
poisk_pix(Sm_chis[Nom_chis]);
 
 Top
Kibor
Отправлено: 13 Января, 2014 - 20:13:13
Post Id



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


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




 darow пишет:
а что означает эта строка?
poisk_pix(Sm_chis[Nom_chis]);

..
Вызов функции poisk_pix.
В параметре передается смещение которое указано в
Sm_chis[0]=70;
Sm_chis[1]=110;

Nom_chis меняется на 0 или 1..
Создание функций..
 
 Top
darow
Отправлено: 13 Января, 2014 - 20:17:22
Post Id



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


Покинул форум
Сообщений всего: 45
Дата рег-ции: Янв. 2014  
Откуда: Украина
Репутация: 0




да всетаки в упор не хочет сравнивать второе число и не важно с каким его сравнивать числом и 2 и 3 и 5 и 10 .... первое сравнивается отлично, но перехода на второе че-то не происходит...
(Добавление)
а вот эту логику немного не пойму:
if (Nom_chis==2)Nom_chis=0;
число равно 2
сделать второе число=0
извините, может я плохо читаю что делает if когда нет скобок...
 
 Top
Kibor
Отправлено: 13 Января, 2014 - 20:31:12
Post Id



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


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




 darow пишет:
а вот эту логику немного не пойму:
if (Nom_chis==2)Nom_chis=0;
число равно 2
сделать второе число=0
извините, может я плохо читаю что делает if когда нет скобок...

если (Nom_chis равно 2) Nom_chis присвоить 0;

Скобки надо если более 1 инструкции идет в условие.
if (Nom_chis==2)Nom_chis=0;
то же самое
if (Nom_chis==2)
{
Nom_chis=0;
}
Справка - логика и переходы в "кибор"

 darow пишет:
да всетаки в упор не хочет сравнивать второе число и не важно с каким его сравнивать числом и 2 и 3 и 5 и 10 .... первое сравнивается отлично, но перехода на второе че-то не происходит...

Может неверное смещение? на второе...
Если так второе читается число вообще то??
 Цитата:
if (kf1!="")//Число есть
{
messagebox (kf1);
sleep(1000);

if (formatsn(kf1)<=5)
{
beep (1000, 500)
}
}
 
 Top
darow
Отправлено: 13 Января, 2014 - 20:31:20
Post Id



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


Покинул форум
Сообщений всего: 45
Дата рег-ции: Янв. 2014  
Откуда: Украина
Репутация: 0




вот выставляю искать больше 2:(для просмотра ссылки Вам необходимо авторизоваться) на странице такая ситуация:(для просмотра ссылки Вам необходимо авторизоваться) и пищит даже очень отлично, только 1К уменьшился ниже 2, пик перестал, только увеличился более 2 пик опять вновь, т.е. отлично на 1К работает...
но выставляю при такой картинке меньше 2, то тишина.... хотя и ошибок не выбрасывает
(Добавление)
при таком коде:
(для просмотра ссылки Вам необходимо авторизоваться)
и такой странице:
(для просмотра ссылки Вам необходимо авторизоваться)
выдало:
(для просмотра ссылки Вам необходимо авторизоваться)
что кстати странно...
видно что-то на втором числе не смещается...
 
 Top
Kibor
Отправлено: 13 Января, 2014 - 20:39:30
Post Id



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


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




Логика сделана по этому::
 darow пишет:
мне нужно не 2 поиска вести а поочереди, если в К1 не нашло перейти на К2 и тд...


Если просто считать 2 числа, то так:
 Цитата:
lop:

//ищем по 1 цифре в рамке поиска. записываем координаты
if (skan()==1)goto lop;


if (kf1!="")//Число есть
{
if (formatsn(kf1)<=5)
{
beep (1000, 500)
}
Nom_chis++;
if (Nom_chis==2)Nom_chis=0;
}


}
sleep(50);
goto a;
 
 Top
darow
Отправлено: 13 Января, 2014 - 20:46:23
Post Id



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


Покинул форум
Сообщений всего: 45
Дата рег-ции: Янв. 2014  
Откуда: Украина
Репутация: 0




может я опять что-то не так написал в объяснениях чтобы хотелось на выходе получить, вчера я так писал:
Алгоритм выглядит так:
1) сканирует К1
2) К1 сравнивает с числом:
-если верно, то выдавать звук, пропускать сканирование К2(в сканировании нет смысла), переходит вновь на цикл
- если неверно, то переходить к сканированию К2
3) сканирует К2
4) К2 сравнивает с числом:
- если верно, то выдает звук, переходит вновь на цикл
- если неверно, переходит вновь на цикл.
(Добавление)
короче задача сводится к элементарной логике:
CODE:

CODE:
a: if (4>=5)
{
beep (500, 500)
}
else
{
if (3>=5)
{
beep (500, 1000)
}
else
{
beep (1000, 1000)
}
}

sleep(1000);
goto a;

это простой пример аналогии логики, вот я его и хотел тут применить с помощью функций сначала...
(Добавление)
мне считывать 2 числа сразу вообщем не главное, главное вычислить какое из них более или менее указанной задачи...
 
 Top
Страниц (9): « 1 2 3 4 5 6 [7] 8 9 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by