Zireael |
Отправлено: 27 Февраля, 2021 - 17:13:33
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
CODE:int array[1920][1080];
initialarray(#array[0][0], 255);
loop()
{
visual(200, 100, 700, 500, 3); // координаты рамки и толщина линии
sleep(10);
}
function visual(int sx, int sy, int ex, int ey, int width)
{
visualwindow(0, 0, 0, ex-sx, width, sx, sy, 100, #array[0][0]);
visualwindow(1, 0, 0, width, ey-sy, sx, sy, 100, #array[0][0]);
visualwindow(2, 0, 0, ex-sx+width, width, sx, ey, 100, #array[0][0]);
visualwindow(3, 0, 0, width, ey-sy, ex, sy, 100, #array[0][0]);
} |
|
|
lavpochta |
Отправлено: 07 Марта, 2021 - 00:26:12
|
Наблюдатель
Покинул форум
Сообщений всего: 27
Дата рег-ции: Нояб. 2019
Репутация: 0
|
Здраствуйте!
Никак не могу понять почему не ищет картинку из одного массива в другом?
CODE:
int sc1_HP_Mob[224][3];
int sc2_HP_Mob[222][1];
int a;//для оперативного мусора
int scX_HP_Mob[1], scY_HP_Mob[1];//координаты картинки
int X_scr, Y_scr;
//...
int X1_HP_Mob=200;// к примеру
int X2_HP_Mob=393;// к примеру, приведет длине картинки по оси Х=195
int Y1_HP_Mob=50;// к примеру
if (screen(#sc1_HP_Mob[0][0], X1_HP_Mob-1, Y1_HP_Mob-1, X2_HP_Mob+1, Y1_HP_Mob+2, -1)==1)//Вырезаем полоску 195х3пикс
{
a=0;
X_scr=imagewidth(#sc1_HP_Mob[0][0]);//=195
Y_scr=imageheight(#sc1_HP_Mob[0][0]);//=3
}
//...
if (screen(#sc2_HP_Mob[0][0], X1_HP_Mob, Y1_HP_Mob, X2_HP_Mob, Y1_HP_Mob+1, -1)==1)//Вырезаем полоску 193х1пикс
{
a=0;
}
//...
a=findimage(1, #sc2_HP_Mob[0][0], -1, #scX_HP_Mob[0], #scY_HP_Mob[0], 0, 0, X_scr, Y_scr, #sc1_HP_Mob[0][0]);//Ищем маленькую полоску в большой
messagebox("a="+format(a)+" scX_HP_Mob[0]="+format(scX_HP_Mob[0]));
Почему возвращает a=-4 ???
scX_HP_Mob[0]=-842150451 (видно, что поиск само собой безрезультатный) |
|
|
Zireael |
Отправлено: 07 Марта, 2021 - 00:36:04
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Почему возвращает a=-4 ???
В случае ошибки возвращает:
-1 размер масива в который записываются X координаты меньше найденых изабражений
-2 размер масива в который записываются Y координаты меньше найденых изабражений
-3 Область поиска меньше искомого рисунка по X
-4 Область поиска меньше искомого рисунка по Y
(Добавление)
Баг похоже.
CODE:int image1[10][3];
int image2[10][1];
int x, y;
screen(#image1[0][0], 0, 0, 9, 3, -1);
screen(#image2[0][0], 0, 0, 9, 1, -1);
int result =findimage(1, #image2[0][0], -1, #x, #y, 0, 0, 9, 1, #image1[0][0]);
messagebox(result);
Так нормально:
CODE:int image1[10][3];
int image2[10][1];
int x, y;
screen(#image1[0][0], 0, 0, 10, 3, -1);
screen(#image2[0][0], 0, 0, 10, 1, -1);
int result =findimage(1, #image2[0][0], -1, #x, #y, 0, 0, 10, 1, #image1[0][0]);
messagebox(result);
Выделяйте больше памяти для картинки. Так нет ошибки:
CODE:int image1[10][3];
int image2[10][2];
int x, y;
screen(#image1[0][0], 0, 0, 9, 3, -1);
screen(#image2[0][0], 0, 0, 9, 1, -1);
int result =findimage(1, #image2[0][0], -1, #x, #y, 0, 0, 9, 1, #image1[0][0]);
messagebox(result); |
|
|
|