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

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

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

> Без описания
Martin
Отправлено: 18 Июля, 2022 - 15:13:28
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 121
Дата рег-ции: Июнь 2022  
Репутация: 1




Я делаю поиск картинок на экране по цепочке. И как только найдется первый объект выполняется с ним действие, он исчезает и цикл начинается по новой. Получается поиск повторяется с начала а не с места где он нашел первый объект и тратится много лишнего времени.
Как сделать чтобы сначала нашлись на экране все картинки а потом выполнить с ними одно из трех действий? Или как то по другому ускорить поиск
 
 Top
KevinS
Отправлено: 18 Июля, 2022 - 16:28:06
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 218
Дата рег-ции: Февр. 2020  
Репутация: 2




CODE:

loop()
{
if(findimage(...)==1) действие;
if(findimage(...)==1) {действие; действие;}
if(findimage(...)==1) действие;
}

(Отредактировано автором: 18 Июля, 2022 - 16:29:50)

 
 Top
Martin
Отправлено: 18 Июля, 2022 - 16:42:05
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 121
Дата рег-ции: Июнь 2022  
Репутация: 1




KevinS , Проблема в том, что действия после нахождения картинки уводят в начало цикла и вернутся нет возможности в место где была найдена картинка и продолжить от туда. Такое решение не подойдет
(Добавление)
Это не было бы проблемой если бы картинок было меньше 100.
 
 Top
Zireael
Отправлено: 18 Июля, 2022 - 16:47:22
Post Id



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


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




 Цитата:
поиск картинок

Непонятно что имеется ввиду. Поиск разных картинок или одной и той же.
 Цитата:
одно из трех действий?

Как определять какое именно действие?
 
 Top
Martin
Отправлено: 18 Июля, 2022 - 17:12:17
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 121
Дата рег-ции: Июнь 2022  
Репутация: 1




Zireael , Поиск разных картинок, есть база картинок для findimage, так же есть поле где нужно найти эти картинки. Картинки могут повторятся.

 Zireael пишет:
Как определять какое именно действие?

После клика на найденную картинку появляется окно и в зависимости от того, что там написано /изображено, выбирается одно из трех действий.
 
 Top
KevinS
Отправлено: 18 Июля, 2022 - 18:22:48
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 218
Дата рег-ции: Февр. 2020  
Репутация: 2




 Martin пишет:
KevinS , Проблема в том, что действия после нахождения картинки уводят в начало цикла и вернутся нет возможности в место где была найдена картинка и продолжить от туда. Такое решение не подойдет
(Добавление)
Это не было бы проблемой если бы картинок было меньше 100.


Не понимаю, а зачем действия после нахождения картинки уводят в начало цикла?

 Цитата:

loop()
{
if(findimage(...)==1) Действие();
if(findimage(...)==1) Действие();
if(findimage(...)==1) Действие();
}

function Действие()
{
//тут в зависимости от того, что там написано /изображено, выбирается одно из трех
действий
}


После выполнения действия перехода в начало цикла не будет. Выполнятся следующие if(findimage(...)==1) Действие(); идущие ниже.

(Отредактировано автором: 18 Июля, 2022 - 18:24:25)

 
 Top
Zireael
Отправлено: 18 Июля, 2022 - 19:11:10
Post Id



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


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




CODE:
string Path = "C:\Users\username\Desktop\image"; // путь к папке с картинками
int Image[200][100][100]; // массив для 200 картинок размером не более 100*100
string FileName[200]; // массив, в которой запишутся имена картинок
int ccord[4] = {6, 147, 113, 197}; // координаты поиска, левый верхний угол и правый нижний
int ResultArray[999][2]; // массив для координат всех найденных картинок
int CountFindImage; // переменная, в которой будет записано сколько всего нашлось картинок
int PosX[99], PosY[99]; // переменные для координат найденных картинок
int i;

int CountImage = dir(Path, #FileName[0], "file", "bmp"); // поиск bmp файлов в папке
messagebox("Количество картинок в папке: "+format(CountImage));

// загрузка картинок в массив
for(i=0; i<CountImage; i++)
{
if(loadimage(#Image[i][0][0], Path+"\"+FileName[i])<1)messagebox("Файл "+FileName[i]+" не загружен");
}

loop()
{
// поиск всех картинок
CountFindImage = 0;
for(i=0; i<CountImage; i++)
{
int Found = findimage(99, #Image[i][0][0], -1, #PosX[0], #PosY[0], ccord[0], ccord[1], ccord[2], ccord[3], -1);
for(int j=0; j<Found; j++)
{
ResultArray[CountFindImage][0] = ccord[0] + PosX[j];
ResultArray[CountFindImage][1] = ccord[1] + PosY[j];
CountFindImage++;
}
}

messagebox("Всего найдено изображений: "+format(CountFindImage));
for(i=0; i<CountFindImage; i++)
{
// тут выполняем нужные действия
mousemove(ResultArray[i][0], ResultArray[i][1]); // навести курсор на все найденные картинки
pause(500);
}

pause(3000);
messagebox("Повтор");
}
 
 Top
konctantin777
Отправлено: 19 Июля, 2022 - 18:28:13
Post Id



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


Покинул форум
Сообщений всего: 1137
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




А если я найду все зоны динамики, сохраню. Подскажите как потом искать динамику(чтобы кликнуть) исключая найденные места- не могу сообразить..
(Добавление)
Т. е.. задача- найти на экране всю динамику, чтобы потом искать динамику в местах где её не было при 1м поиске
(Добавление)
Искомый объект 5 пикселей. Если найти всю динамику и проверять, что она не попадает в найденные ранее места, то это же нагрузка большая, учитывая, что на треть экрана объекты могут быть. А виз редакторе можно искать исключая определённые зоны. Значит можно как то автоматом в исключение подставить ?

(Отредактировано автором: 19 Июля, 2022 - 18:29:08)

 
 Top
Zireael
Отправлено: 19 Июля, 2022 - 18:50:36
Post Id



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


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




 Цитата:
А если я найду все зоны динамики, сохраню. Подскажите как потом искать динамику(чтобы кликнуть) исключая найденные места

Искать динамику 2 раза в разные переменные, потом сравнивать координаты, записывая результат в отдельный массив.
 
 Top
konctantin777
Отправлено: 19 Июля, 2022 - 19:04:47
Post Id



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


Покинул форум
Сообщений всего: 1137
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




 Zireael пишет:
потом сравнивать координаты

При 1м поиске находится больше 500 мест динамики. Цикл же долгим получиться постоянно столько перебирать?
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by