Вопрос такой.
Есть поле в игре 3 в ряд. Размер поля - 400*400 пикселей.
поле состоит из 64 "квадратов". Каждый 50*50 пикселей соответственно.
В каждом квадрате естественно есть "фигуры". Всего типов фигур которые и надо собирать 3 в ряд - 8.
Сначала делается скриншот поля в переменную screen[400][400].
Потом перед тем, как сделать ход, программа сканирует поле на предмет каждого типа фишки и записывает числовые значения 0-8 (соответствуют типу фигуры) в массив. Далее я уже работаю с цифрами (ищу ходы и т.д.).
Так вот самое долгое в выполнении самое долгое занимает именно сканирование поля.
***
Выглядит это примерно так, если кому-то нужно:
for (int n=0; n<8; n++)//перебор фишек
{o=findimage(-1, #fishki[n][0][0], 0, #Xf[0], #Yf[0], 0, 0, 378, 378, r1, r1, r1, r1, r1, r1, p1, 1, #screen_game[0][0]);
for (int a=0; a<o; a++)// <8
{
for (int nx=0; nx<8; nx++)
{
for (int ny=0; ny<8; ny++)
{
if (Xk[nx][ny]-(Xf[a]+137)<podgon_screen && (Xf[a]+137)-Xk[nx][ny]<podgon_screen && Yk[nx][ny]-(Yf[a]+87)<podgon_screen && (Yf[a]+87)-Yk[nx][ny]<podgon_screen) //сравнение фишек, не заморачивайся
{
Nk[nx][ny]=n; //записываем фишку типа n в массив который хранит координаты фишек
goto df;
}
}
}
df:;
}
}
***
Получается я беру скрин окна 400*400 потом ищут количество фигур в скрине и записываю координаты в массив. и так для каждой фигуры.
Выполнение чисто сканирования занимает секунд 5 чистого времени, что довольно долго.
Ускорить процесс пробовал заменив поиск фигур на поле, сканированиеv пикселей на местах расположения фигур, но результат почему-то такой же по времени.
Может кто-нибудь подскажет нубу
p.s. Уменьшить размер экрана к сожалению нет возможности, как и размер скрина, на котором ищутся фишки.