

Эксперт

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

|
Пример как можно упростить программирование поиска изображений с помощью своей функции. Не использовать там где надо многократно искать такое изображение.
Пример скорее теоретический, чем практический, так как при каждом поиске выполняется загрузка изображения с файла, определение разрешения экрана. Да и параметры findimage для каждого случая могут быть разные. Тут просто ищется по экрану при полном совпадение изображений.
Единственный плюс (довольно скользкий) - простота использования поиска изображений.
Функцию
CODE:function find_image(string pyt)
{
int Image[250][250];
if (loadimage (#Image[0][0], pyt)<1)return 0;
int col, ex, ey;
getdisplay(col, ex, ey);
return findimage(1, #Image[0][0], -1, #x, #y, 0, 0, ex, ey, -1);
}
Надо вставить в конец своего скрипта.
Использовать так:
CODE:int x, y;//Объявляем переменные в начале скрипта
//Ищем рисунки
if (find_image("C:\1.bmp")>0) mousemove(x, y);//Навести мышь на первый рисунок если нашли
if (find_image("C:\2.bmp")>0) mousemove(x, y);//Навести мышь на второй рисунок если нашли
if (find_image("C:\3.bmp")>0) mousemove(x, y);//Навести мышь на третий рисунок если нашли
//Эту функцию кидаем в конец скрипта
function find_image(string pyt)
{
int Image[250][250];
if (loadimage (#Image[0][0], pyt)<1)return 0;
int col, ex, ey;
getdisplay(col, ex, ey);
return findimage(1, #Image[0][0], -1, #x, #y, 0, 0, ex, ey, -1);
}
//Конец функции
Вот как правильно искать изображения:
CODE:int x, y;//Объявляем переменные в начале скрипта
int Image1[250][250];
loadimage (#Image1[0][0], "C:\1.bmp");
int Image2[250][250];
loadimage (#Image2[0][0], "C:\2.bmp");
int Image3[250][250];
loadimage (#Image3[0][0], "C:\3.bmp");
int col, ex, ey;
getdisplay(col, ex, ey);
if (findimage(1, #Image1[0][0], -1, #x, #y, 0, 0, ex, ey, -1)==1) mousemove(x, y);//Навести мышь на первый рисунок если нашли
if (findimage(1, #Image2[0][0], -1, #x, #y, 0, 0, ex, ey, -1)==1) mousemove(x, y);//Навести мышь на второй рисунок если нашли
if (findimage(1, #Image3[0][0], -1, #x, #y, 0, 0, ex, ey, -1)==1) mousemove(x, y);//Навести мышь на третий рисунок если нашли
В этом случае нам не надо сто раз загружать с файла один и тот же рисунок.
Ознакомиться с loadimage тут
Ознакомиться с findimage тут
Так же тут
Демо скрипт тут
Как использовать графический редактор в Кибор тут.
Эта тема призвана пояснить почему Кибор имеет более сложную структуру языка по сравнению с другими подобными программами. Потому что это более эффективно. |