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

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

 Страниц (1): [1]   

> Описание: найди отличия
ToothFairy
Отправлено: 31 Декабря, 2019 - 00:46:18
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2019  
Репутация: 0




в общем есть 1 картинка поделена на пополам, надо найти отличия между 2 частями и подсветить их, я так понял finddynamic отслеживает изменения, но можно ли эту команду как то прикрутить к моей задачи? или подскажите куда копать, а то подобной темы на форуме не нашел.
 
 Top
Kibor
Отправлено: 31 Декабря, 2019 - 00:54:16
Post Id



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


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




Можно.
При первом вызове координаты первой картинки. а при втором второй.
 
 Top
ToothFairy
Отправлено: 31 Декабря, 2019 - 03:53:01
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2019  
Репутация: 0




 Kibor пишет:
Можно.
При первом вызове координаты первой картинки. а при втором второй.


я не совсем понимаю как работает finddynamic, но поковыряв немного форум и покопипастив немного кода получилось что-то на подобии этого

 Цитата:
int k, X1_st, Y1_st, X2_st, Y2_st, X1_end, Y1_end, X2_end, Y2_end;
int x[20], y[20];
coord(); //функция записывает координаты начала и конца двух картинок, хотя думаю и статически можно прописать координаты
sleep(1000);
finddynamic(0, #x[0], #y[0], 0, 0, 0, 0, X1_st, Y1_st, X2_st, Y2_st, -1);
sleep(1000);
k=finddynamic(21, #x[0], #y[0], 5, 5, 100, 100, X1_end, Y1_end, X2_end, Y2_end, -1);
for (int i=0;i<k;i++)
{
textbkcolor (0,255);
textout(0, x[i], y[i], "тут отличие", 0);
sleep(1000);
}

function coord()
textbkcolor (0,255);
textout(0, 100, 100, "start 1 picture", 0);
e1: if (getkeystate(192)==0) {sleep(50); goto e1;}
getmouse(X1_st, Y1_st);
pause (1000);
textout(0, 100, 100, "end 1 picture", 0);
e2: if (getkeystate(192)==0) {sleep(50); goto e2;}
getmouse(X2_st, Y2_st);
pause (1000);
textout(0, 100, 100, "start 2 picture", 0);
e3: if (getkeystate(192)==0) {sleep(50); goto e3;}
getmouse(X1_end, Y1_end);
pause (1000);
textout(0, 100, 100, "end 2 picture", 0);
e4: if (getkeystate(192)==0) {sleep(50); goto e4;}
getmouse(X2_end, Y2_end);
pause (1000);
}
//©kibor-bot.com


ошибки не выдает, работает, но и не корректно показывает Не понял
помогите пожалуйста Огорчение

(Отредактировано автором: 31 Декабря, 2019 - 03:54:19)

 
 Top
Kibor
Отправлено: 31 Декабря, 2019 - 07:45:57
Post Id



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


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




textout(i, X1_end+x[i], Y1_end+y[i], "тут отличие", 0);

И зоны надо не руками устанавливать, а точно до пикселя.
 
 Top
Zireael
Отправлено: 31 Декабря, 2019 - 10:58:00
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4397
Дата рег-ции: Нояб. 2017  
Репутация: 580




https://ibb.co/2v7x3bh
Открыть картинку в Paint. В скрипте изменить указатель на окно Paint, точнее контрол.
CODE:
win w=window (-1, "Afx:00007FF704EB0000:8", window ("test.png - Paint", "MSPaintApp", -1)); // контрол Paint (исправить, т. к. будет отличаться)

// ко всем координатам приблено 5 пикселей, т. к. изображение в Paint смещено
// вся картинка 100*50 пикселей, т. е. первая половина имеет координаты 0 0 50 50
// вторая 50 0 100 50

if(w) // если окно найдено
{
int x[9999], y[9999]; // сюда запишутся координаты несовпадающих пикселей
finddynamic(0, #x[0], #y[0], 0, 0, 0, 0, 5, 5, 55, 55, w); // первый поиск

int k=finddynamic(sizearray(x), #x[0], #y[0], 0, 0, 0, 0, 55, 5, 105, 55, w); // второй
messagebox("Найдено отличий: "+format(k));

for(int i=0; i<k; i++)
{
mousemove(x[i]+5, y[i]+5, w); // навести курсор на несовпадающие пиксели
sleep(100);
}
}
else messagebox("Окно не найдено");
 
 Top
ToothFairy
Отправлено: 31 Декабря, 2019 - 12:20:31
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2019  
Репутация: 0




всем спасибо, все получилось!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by