konctantin777 пишет:
Всё, что не распознал отдельный блок- препятствие?
Верно.
konctantin777 пишет:
У меня норм работает))
У меня не хватило мозгов запустить Если ищу картинки через фанд колор все отлично находит а через скрипт не верно всё в массив заносит
Скрипт (Отобразить)
без основных функций
CODE:
int col=6, row=4; // размеры поля, количество столбцов, количество строк
int fishka=8; // количество фишек
string path="C:\"; // путь для сохранения скрина, массива с номерами фишек и массива с возможными ходами и стоимостью ходов
enablerealmouse(10, 0, 0, 0);
// стоимость фишек
new int cost[fishka];
cost[0]=99; // стоимость черепов с рогами
cost[1]=99; // стоимость черепов
cost[2]=99; // стоимость черепок
cost[3]=99; // стоимость зелёный скворечник
cost[4]=10; // стоимость синия капля
cost[5]=-1; // стоимость красный шар
cost[6]=-1; // стоимость ----
cost[7]=-1; // стоимость пустота
int priority=3; // приоритет для хода
// 0 - приоритет 5 в ряд, если нет такого хода, будет сделан ход максимальный по стоимости
// 1 - приоритет 5 или 4 в ряд, если нет таких ходов, будет сделан ход максимальный по стоимости
// 2 - приоритет максимальная стоимость хода,
// 3 - если нет ходов 4 или 5, то приоритет 3 в ряд, которые находятся в самом низу поля
// параметры для findheapcolor
int r=10; // разбежность для поиска картинок (подобрать, если не находит картинки)
//int sx=801, sy=96, fx=1127, fy=420; // координаты для findheapcolor
int sx=1744, sy=766, fx=1909, fy=954; // координаты для findheapcolor
int color5[1], color6[2], color7[1], color8[1];
int color1[3] = {15527148, 14606046, 16316664};
int kol1[3] ={59, 23, 20};//1
int color2[3] = {15790050, 13618862, 2652967};
int kol2[3] = {51, 44, 11};// 2
int color3[1] = {0};
int kol3[1] = {50}// 3
int color4[2] = {3146433, 2687403};
int kol4[2] = {40, 40};// 4
color5[0]=9;// синия капля
color6[0]=9; // красный шар
color7[0]=9; // ----
color8[0]=9; // пустота
int kol5[2], kol6[2], kol7[1], kol8[1];
kol5[0]=22; kol5[1]=8;// синия капля
kol6[0]=75; kol6[1]=66;// красный шар
kol7[0]=100;// ----
kol8[0]=111;// пустота
////////////
int sx2=1036, sy2=37, fx2=1107, fy2=84; // координаты белой стрелки хода противника
// тут ничего не менять
int kx1, ky1, kx2, ky2;
int size_field=row*col; // размер поля
int i, j, k, found;
new int field[col][row]; // поле
new int arr[size_field][3]; // массив для всех найденных фишек, хранит координаты и номер фишки
new int posX[size_field];
new int posY[size_field]; // массивы для координат фишек
new int scren[fx-sx+1][fy-sy+1]; // массив для скрина экрана
int stepX=(fx-sx)/col, stepY=(fy-sy)/row; // размеры клеток
int pos_textout_y, time;
////////////
loop()
{
pos_textout_y=fy+20;
resettextout(1);
textbkcolor(16000000, 65280);
textout(0, sx, pos_textout_y, "Проверка доступности хода", 0);pos_textout_y=pos_textout_y+20;
//dynamic(4, 4, sx2, sy2, fx2, fy2); // проверка что ходит не противник
textout(1, sx, pos_textout_y, "Проверка динамики", 0);pos_textout_y=pos_textout_y+20;
//dynamic(stepX, stepY, sx, sy, fx, fy); // поиск динамики, ждёт когда фишки перестанут сдвигаться
screen (#scren[0][0], sx, sy, fx, fy, -1); // скрин
textout(2, sx, pos_textout_y, "Поиск картинок", 0);pos_textout_y=pos_textout_y+20;
found=0;
//while(found<size_field) // пока не найдется нужное количество фишек
//{
found=find(); // поиск картинок и их сортировка
sleep(10);
//}
SaveArray(); // сохранение массива в файл (можно убрать)
saveimage(#scren[0][0], path+"scren.bmp");// сохранить скрин (можно убрать)
time=gettime();
int z=perebor(#field[0][0], col, row, #kx1, #ky1, #kx2, #ky2, #cost[0], fishka, priority); // поиск хода
textout(3, sx, pos_textout_y, "На поиск хода затрачено: "+format(gettime()-time)+" мсек", 0);pos_textout_y=pos_textout_y+20;
textout(4, sx, pos_textout_y, "Собрано в ряд: "+format(z), 0);pos_textout_y=pos_textout_y+20;
if (z>2)hod(kx1, ky1, kx2, ky2); // если ход найден
//else {messagebox("Ход не найден"Подмигивание; break;}
sleep(300);
textout(5, sx, pos_textout_y, "Проверка динамики", 0);pos_textout_y=pos_textout_y+20;
//dynamic(stepX, stepY, sx, sy, fx, fy); // поиск динамики, ждёт когда фишки перестанут сдвигаться
}
int col=6, row=4; // размеры поля, количество столбцов, количество строк
int fishka=8; // количество фишек
string path="C:\"; // путь для сохранения скрина, массива с номерами фишек и массива с возможными ходами и стоимостью ходов
enablerealmouse(10, 0, 0, 0);
// стоимость фишек
new int cost[fishka];
cost[0]=99; // стоимость черепов с рогами
cost[1]=99; // стоимость черепов
cost[2]=99; // стоимость черепок
cost[3]=99; // стоимость зелёный скворечник
cost[4]=10; // стоимость синия капля
cost[5]=-1; // стоимость красный шар
cost[6]=-1; // стоимость ----
cost[7]=-1; // стоимость пустота
int priority=3; // приоритет для хода
// 0 - приоритет 5 в ряд, если нет такого хода, будет сделан ход максимальный по стоимости
// 1 - приоритет 5 или 4 в ряд, если нет таких ходов, будет сделан ход максимальный по стоимости
// 2 - приоритет максимальная стоимость хода,
// 3 - если нет ходов 4 или 5, то приоритет 3 в ряд, которые находятся в самом низу поля
// параметры для findheapcolor
int r=10; // разбежность для поиска картинок (подобрать, если не находит картинки)
//int sx=801, sy=96, fx=1127, fy=420; // координаты для findheapcolor
int sx=1744, sy=766, fx=1909, fy=954; // координаты для findheapcolor
int color5[1], color6[2], color7[1], color8[1];
int color1[3] = {15527148, 14606046, 16316664};
int kol1[3] ={59, 23, 20};//1
int color2[3] = {15790050, 13618862, 2652967};
int kol2[3] = {51, 44, 11};// 2
int color3[1] = {0};
int kol3[1] = {50}// 3
int color4[2] = {3146433, 2687403};
int kol4[2] = {40, 40};// 4
color5[0]=9;// синия капля
color6[0]=9; // красный шар
color7[0]=9; // ----
color8[0]=9; // пустота
int kol5[2], kol6[2], kol7[1], kol8[1];
kol5[0]=22; kol5[1]=8;// синия капля
kol6[0]=75; kol6[1]=66;// красный шар
kol7[0]=100;// ----
kol8[0]=111;// пустота
////////////
int sx2=1036, sy2=37, fx2=1107, fy2=84; // координаты белой стрелки хода противника
// тут ничего не менять
int kx1, ky1, kx2, ky2;
int size_field=row*col; // размер поля
int i, j, k, found;
new int field[col][row]; // поле
new int arr[size_field][3]; // массив для всех найденных фишек, хранит координаты и номер фишки
new int posX[size_field];
new int posY[size_field]; // массивы для координат фишек
new int scren[fx-sx+1][fy-sy+1]; // массив для скрина экрана
int stepX=(fx-sx)/col, stepY=(fy-sy)/row; // размеры клеток
int pos_textout_y, time;
////////////
loop()
{
pos_textout_y=fy+20;
resettextout(1);
textbkcolor(16000000, 65280);
textout(0, sx, pos_textout_y, "Проверка доступности хода", 0);pos_textout_y=pos_textout_y+20;
//dynamic(4, 4, sx2, sy2, fx2, fy2); // проверка что ходит не противник
textout(1, sx, pos_textout_y, "Проверка динамики", 0);pos_textout_y=pos_textout_y+20;
//dynamic(stepX, stepY, sx, sy, fx, fy); // поиск динамики, ждёт когда фишки перестанут сдвигаться
screen (#scren[0][0], sx, sy, fx, fy, -1); // скрин
textout(2, sx, pos_textout_y, "Поиск картинок", 0);pos_textout_y=pos_textout_y+20;
found=0;
//while(found<size_field) // пока не найдется нужное количество фишек
//{
found=find(); // поиск картинок и их сортировка
sleep(10);
//}
SaveArray(); // сохранение массива в файл (можно убрать)
saveimage(#scren[0][0], path+"scren.bmp");// сохранить скрин (можно убрать)
time=gettime();
int z=perebor(#field[0][0], col, row, #kx1, #ky1, #kx2, #ky2, #cost[0], fishka, priority); // поиск хода
textout(3, sx, pos_textout_y, "На поиск хода затрачено: "+format(gettime()-time)+" мсек", 0);pos_textout_y=pos_textout_y+20;
textout(4, sx, pos_textout_y, "Собрано в ряд: "+format(z), 0);pos_textout_y=pos_textout_y+20;
if (z>2)hod(kx1, ky1, kx2, ky2); // если ход найден
//else {messagebox("Ход не найден"Подмигивание; break;}
sleep(300);
textout(5, sx, pos_textout_y, "Проверка динамики", 0);pos_textout_y=pos_textout_y+20;
//dynamic(stepX, stepY, sx, sy, fx, fy); // поиск динамики, ждёт когда фишки перестанут сдвигаться
}