darow |
Отправлено: 11 Января, 2014 - 18:35:55
|
Наблюдатель
Покинул форум
Сообщений всего: 45
Дата рег-ции: Янв. 2014
Откуда: Украина
Репутация: 0
|
Всем еще раз здравствуйте, вот продолжаем мы воять скрипт робота, нелегкое занятие это всетаки... встала задача скрипт находит цифры на странице отлично, но как выяснилось цифры немного смещаются в пределах 10 писелей по горизонтали когда меняют свое значение, и тогда потеряв точку откуда надо сканировать цифру кибор посылает...
CODE:
int color, xe, ye;//разрешение экрана
getdisplay(color, xe, ye);//Узнать разрешение экрана
int stvol_X, stvol_Y;// координаты стартовой точки в волейб
int z=10;
//Загрузка рисунков
int im_stvol[121][11];
loadimage (#im_stvol[0][0], "C:\citi\Image_ishody po partiyam.bmp");//рис стартовой точки в волейболе
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)//находим стартовую точку
//поиск первого пикселя не белого и с него начать перебор
findcolor(1, #X[1],#Y[1], stvol_X+76, stvol_Y+36, stvol_X+86, stvol_Y+36, 13226495, 1);
X[0]=stvol_X+76; Y[0]=stvol_Y+36;
X[1]=X[0]+7; Y[1]=Y[0]+13;
{
mousemove(X[0], Y[0]);
sleep(1000);
mousemove(X[1], Y[1]);
sleep(1000);
}
(Добавление)
вот решил отдельно заняться поиском пикселя отличного от белого в частности взял цвет 13226495... координаты стартовой точки есть-это угол картинки левый верхний от него отступ +76 по х +36 по у, и далее зона шириной в 10 пикселей в которой нужно искать цвет 13226495, как только найдет то подвести туда мышь... но что-то не хочет меня кибор понимать.... кто что подскажет? |
|
|
Andrew |
Отправлено: 11 Января, 2014 - 19:09:33
|
Участник
Покинул форум
Сообщений всего: 118
Дата рег-ции: Июнь 2013
Откуда: Россия
Репутация: 9
|
Здравствуйте darow , может я чего не понимаю, объясните
darow пишет: X[0]=stvol_X+76; Y[0]=stvol_Y+36;
X[1]=X[0]+7; Y[1]=Y[0]+13;
Так можно? Как я понял, Вы взяли не обявленную переменную и придали ей значение, да простит меня Кибор, так можно?
Может у функции поиска цвета будет нечто такое?
CODE:if (findcolor(1, #X[1],#Y[1], stvol_X+76, stvol_Y+36, stvol_X+86, stvol_Y+36, 13226495, 1)==1);
{
X[0]=stvol_X+76; Y[0]=stvol_Y+36;
X[1]=X[0]+7; Y[1]=Y[0]+13;
mousemove(X[0], Y[0]);
sleep(1000);
mousemove(X[1], Y[1]);
sleep(1000);
}
else {pause(500); goto a;}
(Добавление)
перед if (findcolor забыл a: |
|
|
darow |
Отправлено: 11 Января, 2014 - 20:33:50
|
Наблюдатель
Покинул форум
Сообщений всего: 45
Дата рег-ции: Янв. 2014
Откуда: Украина
Репутация: 0
|
че-то не выходит и с вашим вариантом:
(для просмотра ссылки Вам необходимо авторизоваться) (Добавление)
по поводу необъявленной переменной... честно не заметил, убрал ее и все равно не идет...
(Добавление)
может хоть кто-то подскажет, в чем же проблема, я ход мыслей программы понимаю, но вот с синтаксисом видимо еще большие проблемы....
(Добавление)
Давайте попробуем сначала:
1) подводим курсор к месту начала поиска пикселей
CODE:int Image_0[121][11];loadimage (#Image_0[0][0], "C:\citi\Image_ishody po partiyam.bmp");
int PosX_0, PosY_0;
if (findimage(1, #Image_0[0][0], 0, #PosX_0, #PosY_0, 0, 0, 1366, 706, -1)==1)
{
mouse(LEFT, PosX_0+75, PosY_0+40);
}
else messagebox ("ne nashel");
2) как мне искать в пределах следующих 10 пикселей по горизонтали искать любого цвета пиксель но не цвета 16777215 ?
CODE:if findcolor(1, #PosX_0[1],#PosY_0[1], PosX_0+75, PosY_0+40, PosX_0+85, PosY_0+40, 13226495, 1);
данная строка че-то не помогает |
|
|
darow |
Отправлено: 11 Января, 2014 - 23:19:45
|
Наблюдатель
Покинул форум
Сообщений всего: 45
Дата рег-ции: Янв. 2014
Откуда: Украина
Репутация: 0
|
пробую уже просто вручную научиться искать координаты нужного цвета пикселя:
CODE:int color, xe, ye;
getdisplay(color, xe, ye);
int PosX_0, PosY_0;
if findcolor(1, #PosX_0,#PosY_0, 300, 404, 315, 404, 13226495, 1);
messagebox ("PosX_0, PosY_0");
и опять не выводит, че ж ему надо?(Отредактировано автором: 11 Января, 2014 - 23:20:22) |
|
|
Kibor |
Отправлено: 12 Января, 2014 - 00:23:49
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Цитата: 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)//находим стартовую точку
{
int xn=stvol_X+55, yn=stvol_Y+36;
int xn1=xn+100, yn1=yn+15;
int min=999999;
s: if (xn<x1)
{
yn=stvol_Y+36;
s1: if (yn<y1)
{
if (getcolor(xn, yn)!=16777215)
{
if (xn<min){min=xn; stvol_X=xn-2;}
}
yn++;
goto s1;
}
xn++;
goto s;
}
X[0]=stvol_X; Y[0]=stvol_Y;
X[1]=X[0]+7; Y[1]=Y[0]+13;
Примерно такой код найдет в области что на рисунке самый левый не белый пиксель.
|
|
|
|