Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

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

> Описание: Анализ лабиринта и составление кратчайшего пути
Kibor
Отправлено: 22 Мая, 2017 - 16:21:37
Post Id



Администратор
Эксперт


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




Подробнее о функции поиска кратчайшего пути findpath


Видео демострирующее анализ лабиринта по картинке, поск и прорисовку в паинте на нем кратчайшего пути.



Нажмите для увеличения


Скрипт:
CODE:
int labirint[180][180];
int pyt[180][180];
int sizeX, sizeY;

int kx[180][180];
int ky[180][180];

int sX=8;
int sY=145;
int fX=539;
int fY=675;

int image_start[1][1];
int image_finish[1][1];
int image_proxod[3][3];

int erskr[570][570];

int x, y, xxx, yyy, tx, ty;


image_start[0][0]=65280;
image_finish[0][0]=255;
for (x=0; x<3; x++)
{
for (y=0; y<3; y++)image_proxod[x][y]=16777215;
}



pause(1000);
screen (#erskr[0][0], sX, sY, fX, fY, -1);


x=0; y=0;
for (yyy=0; yyy<525; yyy=yyy+4)
{
x=0;
for (xxx=0; xxx<525; xxx=xxx+4)
{
labirint[x][y]=1;
if (findimage(1, #image_proxod[0][0], -1, #tx, #ty, xxx, yyy, xxx+4, yyy+4, #erskr[0][0])==1)labirint[x][y]=0;
if (findimage(1, #image_start[0][0], -1, #tx, #ty, xxx, yyy, xxx+4, yyy+4, #erskr[0][0])==1)labirint[x][y]=2;
if (findimage(1, #image_finish[0][0], -1, #tx, #ty, xxx, yyy, xxx+4, yyy+4, #erskr[0][0])==1)labirint[x][y]=3;
kx[x][y]=xxx+sX;
ky[x][y]=yyy+sY;
x++;
}
y++;
}
sizeX=x;
sizeY=y;




int k=findpath(#labirint[0][0], #pyt[0][0], sizeX, sizeY);

if (k>0)
{
for (y=0; y<sizeY; y++)
{
for (x=0; x<sizeX; x++)
{
if (pyt[x][y]>-1)mouse(LEFT, kx[x][y]+2, ky[x][y]+2);
}
}

if (fopen ("c:\ЛАБИРИНТ.txt", "w")!=0)
{
for (y=0; y<sizeY; y++)
{
for (x=0; x<sizeX; x++)
{
fwrite(labirint[x][y]);
fwrite(" ");
}
fwrite(ENDL);
}
fclose();
}

}


messagebox(k);




 
 Top
Kibor
Отправлено: 23 Мая, 2017 - 21:00:22
Post Id



Администратор
Эксперт


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




На этом видео показана работа доработанного скрипта.
Путь будет прорисовываться не построчно, а от точки старта до финиша.



Скрипт
CODE:
int labirint[180][180];
int pyt[180][180];
int sizeX, sizeY;

int kx[180][180];
int ky[180][180];

int sX=8;
int sY=145;
int fX=539;
int fY=675;

int image_start[1][1];
int image_finish[1][1];
int image_proxod[3][3];

int erskr[570][570];

int x, y, xxx, yyy, tx, ty;

int Xx[20000], Yy[20000];

image_start[0][0]=65280;
image_finish[0][0]=255;
for (x=0; x<3; x++)
{
for (y=0; y<3; y++)image_proxod[x][y]=16777215;
}



pause(1000);
screen (#erskr[0][0], sX, sY, fX, fY, -1);


x=0; y=0;
for (yyy=0; yyy<525; yyy=yyy+4)
{
x=0;
for (xxx=0; xxx<525; xxx=xxx+4)
{
labirint[x][y]=1;
if (findimage(1, #image_proxod[0][0], -1, #tx, #ty, xxx, yyy, xxx+4, yyy+4, #erskr[0][0])==1)labirint[x][y]=0;
if (findimage(1, #image_start[0][0], -1, #tx, #ty, xxx, yyy, xxx+4, yyy+4, #erskr[0][0])==1)labirint[x][y]=2;
if (findimage(1, #image_finish[0][0], -1, #tx, #ty, xxx, yyy, xxx+4, yyy+4, #erskr[0][0])==1)labirint[x][y]=3;
kx[x][y]=xxx+sX;
ky[x][y]=yyy+sY;
x++;
}
y++;
}
sizeX=x;
sizeY=y;




int k=findpath(#labirint[0][0], #pyt[0][0], sizeX, sizeY);



for (y=0; y<sizeY; y++)
{
for (x=0; x<sizeX; x++)
{
if (pyt[x][y]>-1)
{
Xx[pyt[x][y]]=kx[x][y];
Yy[pyt[x][y]]=ky[x][y];
}
}
}




if (k>0)
{
for (int n=0; n<k; n++)
{
mouse(LEFT, Xx[n]+2, Yy[n]+2);
}

if (fopen ("c:\ЛАБИРИНТ.txt", "w")!=0)
{
for (y=0; y<sizeY; y++)
{
for (x=0; x<sizeX; x++)
{
fwrite(labirint[x][y]);
fwrite(" ");
}
fwrite(ENDL);
}
fclose();
}

}



messagebox(k);

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Готовые скрипты »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by