Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » звук при изменении изображения в определенной области

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

1. balabashka - 27 Января, 2015 - 09:03:18 - перейти к сообщению
Есть программа, по нажатии меню, обновить появляется бонус, но редко. В программировании ни бум бум, клики мышкой написал. Помогите написать код, чтобы при изменении изображения в определенной области подавался звуковой сигнал.Чтобы можно было отвлечься на свои дела, а не пялиться в монитор. Изображение появляется различное.
2. DeLiberate - 28 Января, 2015 - 21:10:33 - перейти к сообщению
CODE:

win wind=window ("Ваше окно...", -1); //указатель на окно.
int Image_a[8][7];
int Image_b[7][6];
int Image_c[8][6];
loadimage (#Image_a[0][0], "C:\Users\Kolya\Documents\Image_a.bmp");
loadimage (#Image_b[0][0], "C:\Users\Kolya\Documents\Image_b.bmp");
loadimage (#Image_c[0][0], "C:\Users\Kolya\Documents\Image_c.bmp");
int PosX_a[1];
int PosY_a[1];
int PosX_b[1];
int PosY_b[1];
int PosX_c[1];
int PosY_c[1];
q:
//ищем 3 изображения
int a=findimage(1, #Image_a[0][0], 0, #PosX_a[0], #PosY_a[0], x_старт, у_старт, х_конец, у_конец, 0, 0, 0, 0, 0, 0, 0, 0, wind);
int b=findimage(1, #Image_b[0][0],0,#PosX_b[0],#PosY_b[0], x_старт, у_старт, х_конец, у_конец, 0, 0, 0, 0, 0, 0, 0, 0, wind);
int c=findimage(1, #Image_c[0][0], 0, #PosX_c[0], #PosY_c[0], x_старт, у_старт, х_конец, у_конец, 0, 0, 0, 0, 0, 0, 0, 0, wind);
if (a==1||b==1||c==1);

{

beep(500,2000); //если есть хоть одно из изображений - пикаем.
}
else
{
goto q; //если не нашли - повторяем заново.
}

Не забудьте объявить указатель на свое окно.
Заменить изображения и массивы для них на свои.
Обозначить области, где будет происходить поиск изображений.
При необходимости добавить еще изображений и их поиск, по аналогии.
3. yo1 - 29 Января, 2015 - 01:28:48 - перейти к сообщению
 balabashka пишет:
Изображение появляется различное.

Если изображений >3 (в коде выше их 3), то лучше сделать так:

CODE:

q:
if (findimage(1, #Image_1[0][0], 0, #PosX_a, #PosY_a, 0, 0, 1280, 768, wind)==1)
{
beep(500,2000);
}
else
{
goto q;
}
4. DeLiberate - 29 Января, 2015 - 06:18:49 - перейти к сообщению
 yo1 пишет:


q:
if (findimage(1, #Image_1[0][0], 0, #PosX_a, #PosY_a, 0, 0, 1280, 768, wind)==1)
{
beep(500,2000);
}
else
{
goto q;
}

В таком случае, мы можем обозначить одно изображение для поиска, и если его нет - то повторяем. Это не подходит.
есть вариант
 Цитата:
q:
if (findimage(1, #Image_1[0][0], 0, #PosX_a, #PosY_a, 0, 0, 1280, 768, wind)!=1)
{
beep(500,2000);
}
else
{
goto q;
}

И в качестве искомого изображения использовать изображение меню, только без бонуса - это не практично, так как если изображение изменится не от бонуса, будет звук, а это плохо.
5. yo1 - 29 Января, 2015 - 10:44:46 - перейти к сообщению
 DeLiberate пишет:
if (findimage(1, #Image_1[0][0], 0, #PosX_a, #PosY_a, 0, 0, 1280, 768, wind)!=1)

Обычно использую ==1 или ==0.
 DeLiberate пишет:
И в качестве искомого изображения использовать изображение меню, только без бонуса

Если заранее известно, что у бонуса картинка одного вида и не меняется, то можно привязать к нему, т.е. есть\нет.
Если картинки с бонусами разные, тогда да, ваш код будет удачнее.
6. DeLiberate - 29 Января, 2015 - 11:09:11 - перейти к сообщению
Исходил из этого.
 balabashka пишет:
Изображение появляется различное.


 yo1 пишет:
Обычно использую ==1 или ==0.

Верно, так и нужно делать.
7. balabashka - 29 Января, 2015 - 13:45:15 - перейти к сообщению
Спасибо конечно, но я думаю это мне не подойдет.Какие картинки я должен грузить? Мне бы что то типа сохранить изображение из определенной области — сохранить второе изображение и сравнить их, различаются, то пикать и конец скрипта. Одинаковые, то удалить первое изображение, нажать меню, обновить (меню и обновить нажимать по клиентским координатам) сохранить картинку, опять сравнить.
Как то так, извините если не могу объяснить точно.
8. 1ledi - 12 Мая, 2019 - 05:04:38 - перейти к сообщению
Здравствуйте подскажите где прописывать зону поиска в этом коде
q:int b=findimage(-1, #Image_1[0][0], 0, #PosX_1[0], #PosY_1[0], 0, 0, xe, ye, 50, 50, 50, 50, 50, 50, 90, 1, -1);
мне надо х1274 y139 правый нижний угол x1389 y920 .
Полный код


int Image_1[27][48];
int Image_2[27][48];
int color, xe, ye;
sleep(1000);
getdisplay(color, xe, ye);

loadimage (#Image_1[0][0], "C:\peshka\Image 1. bmp"Подмигивание;

loadimage (#Image_2[0][0], "C:\peshka\Image-2.bmp"Подмигивание;

int PosX_s[0];
int PosX_b[1];
int PosY_b[1];
int PosX_1[512];int PosY_1[512];

int PosX_0[512];int PosY_0[512];
///////////////////////////////////////////////////////////////////////////////////////////////////
q:int b=findimage(-1, #Image_1[0][0], 0, #PosX_1[0], #PosY_1[0], 0, 0, xe, ye, 50, 50, 50, 50, 50, 50, 90, 1, -1);

sleep(500);

if (b==1);

Сильно не пенайте я всего четыре дня пытаюсь что то понять методом проб и ошибок Закатив глазки
9. Zireael - 12 Мая, 2019 - 10:37:45 - перейти к сообщению
 Цитата:
Синтаксис:
findimage(-1, #image[0][0], fon_color, #x[0], #y[0], x_start, y_start, x_finish, y_finish, wind);
Первый параметр - если -1 - искать все совпадающие изображения и записывать их в масив. Если не -1 , к примеру 5... искать до 5 включительно совпадений и завершать поиск.
Второй - указатель на масив int в котором хранится искомое изображение.
Третий - фоновый цвет который не учитывается при сравнение изображений. Если указать -1, все цвета учитываются. В виде фонового цвета можно указать цвет конкретного пикселя искомой картинки - image[0][0] (цвет левого верхнего пикселя)... и т.д.
Четвертый и пятый - указатели на одномерные масивы int, в которые будут сохранены координаты найденых в окне изображений.
Шестой и седьмой - стартовые клиентские координаты в окне в котором ищется изображение относительно верхнего левого угла.
Восьмой и девятый - клиентские координаты окончания поиска в окне в котором ищется изображение.

Десятый - указатель на окно в котором ищем изображение. При -1 ищется по всему экрану.

 Цитата:
Функцию findimage так же можно использовать для поиска изображений имеющих отклонения цветов от исходного изображения, или по неполному (к примеру частично перекрытому другим изображением). В этом случае findimage принимает 17 параметров:
findimage(1, #Image_0[0][0], 0, #PosX_0[0], #PosY_0[0], 0, 0, 1366, 768, Красный_меньше_на, Красный_больше_на, Зеленый_меньше_на, Зеленый_больше_на, Синий_меньше_на, Синий_больше_на, Процент_совпадений_достаточный_для_идентификации, флаг_не_искать_в_области_где_найдено, -1);

Powered by ExBB FM 1.0 Final