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

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

 Страниц (4): [1] 2 3 4 »   

> Описание: Простая реализация бота игры находящейся в шапке форума.
Kibor
Отправлено: 25 Июля, 2015 - 23:50:35
Post Id



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


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




Простая реализация игры Три В Ряд, находящейся по этой ссылке
http://kibor-bot.com/online_games.html

Видео работы бота http://youtu.be/9PkE5rO6ZUM


Скачать http://kibor-bot.com/bot/3_v_ryad.rar

Распаковать на C..
Рисунки должны быть по адресу
C:\3_v_ryad\start_game.bmp
и т.д.
указать координаты игры

Более универсальный скрипт тут

Тут с улучшенным алгоритмом поиска ходов


Запустить этот скрипт: (поиграться если надо с параметрами int r=55, p=70, r1=10, p1=90;... r, p - разбежность нахождения рисунков фишек.. r1, p2 - разбежность нахождения рисунка левого поля игры..)
CODE:
int r=55, p=70, r1=10, p1=90;
int start_game[14][8], fishki[8][25][25], screen_game[182][182];
int X, Y, col, xe, ye, stx, sty, fx, fy, rx, ry, nx, ny;
int Xk[7][7], Yk[7][7], Nk[7][7], KL[7][7], Xf[49], Yf[49];
if (load_image()==-1){messagebox ("Ошибка загрузки рисунка."); goto er;}

getdisplay(col, xe, ye);
sleep(500);
if (findimage(1, #start_game[0][0], 0, #X, #Y, 0, 0, xe, ye, r1, r1, r1, r1, r1, r1, p1, 1, -1)!=1){messagebox ("Не нашли игру."); goto er;}
stx=X+68; sty=Y+3; fx=X+237; fy=Y+173;//координаты самой игры. узнать в шпионе. координаты экрана
rx=fx-stx; ry=fy-sty;

Xk[0][0]=14; Yk[0][0]=14;//24
mouse (LEFT, X+257, Y+50);

for (nx=0; nx<7; nx++)
{
for (ny=0; ny<7; ny++)
{
Xk[nx][ny]=Xk[0][0]+nx*24;
Yk[nx][ny]=Yk[0][0]+ny*24;
}
}

lo:
if (find()==-1) goto er;
hod();
sleep (100);
mouse (LEFT, X+257, Y+50);
jh: finddynamic(0, #Xf[0], #Yf[0], 0, 0, 0, 0, stx, sty, fx, fy, -1);
sleep(150);
if (finddynamic(1, #Xf[0], #Yf[0], 1, 1, 5, 5, stx, sty, fx, fy, -1)==1){sleep(50); goto jh;}
goto lo;


er:;

function find()
{
int kol=0, k, k1;
ss: screen (#screen_game[0][0], stx, sty, fx, fy, -1);
k=0; k1=0;
for (int n=0; n<8; n++)
{
k=findimage(-1, #fishki[n][0][0], -1, #Xf[0], #Yf[0], 0, 0, rx, ry, r, r, r, r, r, r, p, 1, #screen_game[0][0]);
k1=k1+k;
for (int a=0; a<k; a++)
{
for (nx=0; nx<7; nx++)
{
for (ny=0; ny<7; ny++)
{
if (Xk[nx][ny]-(Xf[a]+10)<10 && (Xf[a]+10)-Xk[nx][ny]<10 && Yk[nx][ny]-(Yf[a]+10)<10 && (Yf[a]+10)-Yk[nx][ny]<10)
{
Nk[nx][ny]=n;
goto df;
}
}
}
df:;
}
}
if (k1!=49)
{
sleep(100);
kol++;
if (kol<5)goto ss;
else return -1;
}

return 1;
}


function hod()
{
for (nx=0; nx<5; nx++)
{
for (ny=5; ny>-1; ny--)
{
if (Nk[nx][ny+1]==Nk[nx+1][ny] && Nk[nx][ny+1]==Nk[nx+2][ny])
{
mouse_hod (stx+Xk[nx][ny], sty+Yk[nx][ny], stx+Xk[nx][ny+1], sty+Yk[nx][ny+1]);
return;
}
/////
if (Nk[nx][ny]==Nk[nx+1][ny+1] && Nk[nx][ny]==Nk[nx+2][ny])
{
mouse_hod (stx+Xk[nx+1][ny], sty+Yk[nx+1][ny], stx+Xk[nx+1][ny+1], sty+Yk[nx+1][ny+1]);
return;
}
/////
if (Nk[nx][ny]==Nk[nx+1][ny] && Nk[nx][ny]==Nk[nx+2][ny+1])
{
mouse_hod (stx+Xk[nx+2][ny+1], sty+Yk[nx+2][ny+1], stx+Xk[nx+2][ny], sty+Yk[nx+2][ny]);
return;
}
}
}
/////////////////////

for (nx=0; nx<5; nx++)
{
for (ny=6; ny>0; ny--)
{
if (Nk[nx][ny-1]==Nk[nx+1][ny] && Nk[nx][ny-1]==Nk[nx+2][ny])
{
mouse_hod (stx+Xk[nx][ny], sty+Yk[nx][ny], stx+Xk[nx][ny-1], sty+Yk[nx][ny-1]);
return;
}
///////
if (Nk[nx][ny]==Nk[nx+1][ny-1] && Nk[nx][ny]==Nk[nx+2][ny])
{
mouse_hod (stx+Xk[nx+1][ny], sty+Yk[nx+1][ny], stx+Xk[nx+1][ny-1], sty+Yk[nx+1][ny-1]);
return;
}
///////
if (Nk[nx][ny]==Nk[nx+1][ny] && Nk[nx][ny]==Nk[nx+2][ny-1])
{
mouse_hod (stx+Xk[nx+2][ny-1], sty+Yk[nx+2][ny-1], stx+Xk[nx+2][ny], sty+Yk[nx+2][ny]);
return;
}
///////
}
}
/////////////////////

for (nx=0; nx<4; nx++)
{
for (ny=6; ny>-1; ny--)
{
if (Nk[nx][ny]==Nk[nx+2][ny] && Nk[nx][ny]==Nk[nx+3][ny])
{
mouse_hod (stx+Xk[nx+1][ny], sty+Yk[nx+1][ny], stx+Xk[nx][ny], sty+Yk[nx][ny]);
return;
}
///////
if (Nk[nx][ny]==Nk[nx+1][ny] && Nk[nx][ny]==Nk[nx+3][ny])
{
mouse_hod (stx+Xk[nx+2][ny], sty+Yk[nx+2][ny], stx+Xk[nx+3][ny], sty+Yk[nx+3][ny]);
return;
}
}
}
/////////////////////

////////////////??????????????????????????????
for (nx=0; nx<6; nx++)
{
for (ny=4; ny>-1; ny--)
{
if (Nk[nx+1][ny]==Nk[nx][ny+1] && Nk[nx+1][ny]==Nk[nx][ny+2])
{
mouse_hod (stx+Xk[nx][ny], sty+Yk[nx][ny], stx+Xk[nx+1][ny], sty+Yk[nx+1][ny]);
return;
}
///////
if (Nk[nx][ny]==Nk[nx+1][ny+1] && Nk[nx][ny]==Nk[nx][ny+2])
{
mouse_hod (stx+Xk[nx][ny+1], sty+Yk[nx][ny+1], stx+Xk[nx+1][ny+1], sty+Yk[nx+1][ny+1]);
return;
}
///////
if (Nk[nx][ny]==Nk[nx][ny+1] && Nk[nx][ny]==Nk[nx+1][ny+2])
{
mouse_hod (stx+Xk[nx][ny+2], sty+Yk[nx][ny+2], stx+Xk[nx+1][ny+2], sty+Yk[nx+1][ny+2]);
return;
}
///////
}
}
/////////////////////

////////////////??????????????????????????????

for (nx=1; nx<7; nx++)
{
for (ny=4; ny>-1; ny--)
{
if (Nk[nx-1][ny]==Nk[nx][ny+1] && Nk[nx-1][ny]==Nk[nx][ny+2])
{
mouse_hod (stx+Xk[nx][ny], sty+Yk[nx][ny], stx+Xk[nx-1][ny], sty+Yk[nx-1][ny]);
return;
}
///////
if (Nk[nx][ny]==Nk[nx-1][ny+1] && Nk[nx][ny]==Nk[nx][ny+2])
{
mouse_hod (stx+Xk[nx][ny+1], sty+Yk[nx][ny+1], stx+Xk[nx-1][ny+1], sty+Yk[nx-1][ny+1]);
return;
}
///////
if (Nk[nx][ny]==Nk[nx][ny+1] && Nk[nx][ny]==Nk[nx-1][ny+2])
{
mouse_hod (stx+Xk[nx][ny+2], sty+Yk[nx][ny+2], stx+Xk[nx-1][ny+2], sty+Yk[nx-1][ny+2]);
return;
}
///////
}
}
/////////////////////

//////////////>
for (nx=0; nx<7; nx++)
{
for (ny=3; ny>-1; ny--)
{
if (Nk[nx][ny]==Nk[nx][ny+2] && Nk[nx][ny]==Nk[nx][ny+3])
{
mouse_hod (stx+Xk[nx][ny+1], sty+Yk[nx][ny+1], stx+Xk[nx][ny], sty+Yk[nx][ny]);
return;
}
///////
if (Nk[nx][ny]==Nk[nx][ny+1] && Nk[nx][ny]==Nk[nx][ny+3])
{
mouse_hod(stx+Xk[nx][ny+2], sty+Yk[nx][ny+2], stx+Xk[nx][ny+3], sty+Yk[nx][ny+3]);
return;
}
}
}
//////////////

}

function mouse_hod(int x1, int y1, int x2, int y2)
{
mouse (LEFT, x1, y1);
sleep(500);
mouse (LEFT, x2, y2);
}



function load_image()
{
if (loadimage (#start_game[0][0], "C:\3_v_ryad\start_game.bmp")<1) return -1;
for (int n=0; n<8; n++)
{
if (loadimage (#fishki[n][0][0], "C:\3_v_ryad\"+format(n)+".bmp")<1) return -1;
}
return 1;
}
 
 Top
Semos
Отправлено: 28 Мая, 2016 - 16:42:31
Post Id



Пользователь
Прохожий


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




в общем тут перебором всех ходов, и если указать Kamen=3, например, то выбераем определенную фигуру
CODE:
CODE:
function hod()
kamen=6;
{
for (nx=0; nx<7; nx++)
{
for (ny=6; ny>-1; ny--)
{
ax=Nk[nx][ny];bx=Nk[nx+1][ny];
Nk[nx][ny]=bx;Nk[nx+1][ny]=ax;
if (nx!=6)
{
if ((Nk[nx][ny]==Nk[nx][0] && Nk[nx][ny]==Nk[nx][1] && Nk[nx][ny]==Nk[nx][2] && Nk[nx][ny]==kamen)
|| (Nk[nx][ny]==Nk[nx][1] && Nk[nx][ny]==Nk[nx][2] && Nk[nx][ny]==Nk[nx][3] && Nk[nx][ny]==kamen)
|| (Nk[nx][ny]==Nk[nx][2] && Nk[nx][ny]==Nk[nx][3] && Nk[nx][ny]==Nk[nx][4] && Nk[nx][ny]==kamen)
|| (Nk[nx][ny]==Nk[nx][3] && Nk[nx][ny]==Nk[nx][4] && Nk[nx][ny]==Nk[nx][5] && Nk[nx][ny]==kamen)
|| (Nk[nx][ny]==Nk[nx][4] && Nk[nx][ny]==Nk[nx][5] && Nk[nx][ny]==Nk[nx][6] && Nk[nx][ny]==kamen)
|| (Nk[nx][ny]==Nk[0][ny] && Nk[nx][ny]==Nk[1][ny] && Nk[nx][ny]==Nk[2][ny] && Nk[nx][ny]==kamen)
|| (Nk[nx][ny]==Nk[1][ny] && Nk[nx][ny]==Nk[2][ny] && Nk[nx][ny]==Nk[3][ny] && Nk[nx][ny]==kamen)
|| (Nk[nx][ny]==Nk[2][ny] && Nk[nx][ny]==Nk[3][ny] && Nk[nx][ny]==Nk[4][ny] && Nk[nx][ny]==kamen)
|| (Nk[nx][ny]==Nk[3][ny] && Nk[nx][ny]==Nk[4][ny] && Nk[nx][ny]==Nk[5][ny] && Nk[nx][ny]==kamen)
|| (Nk[nx][ny]==Nk[4][ny] && Nk[nx][ny]==Nk[5][ny] && Nk[nx][ny]==Nk[6][ny] && Nk[nx][ny]==kamen)
|| (Nk[nx+1][ny]==Nk[nx+1][0] && Nk[nx+1][ny]==Nk[nx+1][1] && Nk[nx+1][ny]==Nk[nx+1][2] && Nk[nx][ny]==kamen)
|| (Nk[nx+1][ny]==Nk[nx+1][1] && Nk[nx+1][ny]==Nk[nx+1][2] && Nk[nx+1][ny]==Nk[nx+1][3] && Nk[nx][ny]==kamen)
|| (Nk[nx+1][ny]==Nk[nx+1][2] && Nk[nx+1][ny]==Nk[nx+1][3] && Nk[nx+1][ny]==Nk[nx+1][4] && Nk[nx][ny]==kamen)
|| (Nk[nx+1][ny]==Nk[nx+1][3] && Nk[nx+1][ny]==Nk[nx+1][4] && Nk[nx+1][ny]==Nk[nx+1][5] && Nk[nx][ny]==kamen)
|| (Nk[nx+1][ny]==Nk[nx+1][4] && Nk[nx+1][ny]==Nk[nx+1][5] && Nk[nx+1][ny]==Nk[nx+1][6] && Nk[nx][ny]==kamen))
{
mouse_hod (stx+Xk[nx][ny], sty+Yk[nx][ny], stx+Xk[nx+1][ny], sty+Yk[nx+1][ny]);
return;
}
}
Nk[nx][ny]=ax;Nk[nx+1][ny]=bx;
ax=Nk[nx][ny];bx=Nk[nx][ny-1];
Nk[nx][ny]=bx;Nk[nx][ny-1]=ax;
if (ny!=0)
{
if ((Nk[nx][ny]==Nk[0][ny] && Nk[nx][ny]==Nk[1][ny] && Nk[nx][ny]==Nk[2][ny] && Nk[nx][ny]==kamen)
|| (Nk[nx][ny]==Nk[1][ny] && Nk[nx][ny]==Nk[2][ny] && Nk[nx][ny]==Nk[3][ny] && Nk[nx][ny]==kamen)
|| (Nk[nx][ny]==Nk[2][ny] && Nk[nx][ny]==Nk[3][ny] && Nk[nx][ny]==Nk[4][ny] && Nk[nx][ny]==kamen)
|| (Nk[nx][ny]==Nk[3][ny] && Nk[nx][ny]==Nk[4][ny] && Nk[nx][ny]==Nk[5][ny] && Nk[nx][ny]==kamen)
|| (Nk[nx][ny]==Nk[4][ny] && Nk[nx][ny]==Nk[5][ny] && Nk[nx][ny]==Nk[6][ny] && Nk[nx][ny]==kamen)
|| (Nk[nx][ny]==Nk[nx][6] && Nk[nx][ny]==Nk[nx][5] && Nk[nx][ny]==Nk[nx][4] && Nk[nx][ny]==kamen)
|| (Nk[nx][ny]==Nk[nx][5] && Nk[nx][ny]==Nk[nx][4] && Nk[nx][ny]==Nk[nx][3] && Nk[nx][ny]==kamen)
|| (Nk[nx][ny]==Nk[nx][4] && Nk[nx][ny]==Nk[nx][3] && Nk[nx][ny]==Nk[nx][2] && Nk[nx][ny]==kamen)
|| (Nk[nx][ny]==Nk[nx][3] && Nk[nx][ny]==Nk[nx][2] && Nk[nx][ny]==Nk[nx][1] && Nk[nx][ny]==kamen)
|| (Nk[nx][ny-1]==Nk[0][ny-1] && Nk[nx][ny-1]==Nk[1][ny-1] && Nk[nx][ny-1]==Nk[2][ny-1] && Nk[nx][ny]==kamen)
|| (Nk[nx][ny-1]==Nk[1][ny-1] && Nk[nx][ny-1]==Nk[2][ny-1] && Nk[nx][ny-1]==Nk[3][ny-1] && Nk[nx][ny]==kamen)
|| (Nk[nx][ny-1]==Nk[2][ny-1] && Nk[nx][ny-1]==Nk[3][ny-1] && Nk[nx][ny-1]==Nk[4][ny-1] && Nk[nx][ny]==kamen)
|| (Nk[nx][ny-1]==Nk[3][ny-1] && Nk[nx][ny-1]==Nk[4][ny-1] && Nk[nx][ny-1]==Nk[5][ny-1] && Nk[nx][ny]==kamen)
|| (Nk[nx][ny-1]==Nk[4][ny-1] && Nk[nx][ny-1]==Nk[5][ny-1] && Nk[nx][ny-1]==Nk[6][ny-1] && Nk[nx][ny]==kamen))
{
mouse_hod (stx+Xk[nx][ny], sty+Yk[nx][ny], stx+Xk[nx][ny-1], sty+Yk[nx][ny-1]);
return;
}
}
Nk[nx][ny]=ax;Nk[nx][ny-1]=bx;
}
}
kamen=kamen-1;hod();
if (kamen<0) kamen=6;
}

(Отредактировано автором: 28 Мая, 2016 - 16:59:23)

 
 Top
Kibor
Отправлено: 28 Мая, 2016 - 16:59:23
Post Id



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


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




не работает..
 
 Top
Semos
Отправлено: 28 Мая, 2016 - 17:11:18
Post Id



Пользователь
Прохожий


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




 Kibor пишет:
не работает..

нужно добавить
CODE:
int ax,bx,kamen=6;
 
 Top
Kibor
Отправлено: 28 Мая, 2016 - 17:23:10
Post Id



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


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




это я добавил...
не работает.
выложите весь код..
 
 Top
Semos
Отправлено: 28 Мая, 2016 - 17:45:53
Post Id



Пользователь
Прохожий


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




где то в kamen ошибка, тут есь лишний камень, у меня в игре все работает. и вот, убрал камень, все работает.напишу потом, что бы выбирал лучший ход, 5 фигур, или как можно больше фигур за ход.
CODE:
int r=55, p=70, r1=10, p1=90;
int start_game[14][8], fishki[8][25][25], screen_game[182][182];
int X, Y, col, xe, ye, stx, sty, fx, fy, rx, ry, nx, ny,ax,bx;
int Xk[7][7], Yk[7][7], Nk[7][7], KL[7][7], Xf[49], Yf[49];
if (load_image()==-1){messagebox ("Îøèáêà çàãðóçêè ðèñóíêà."); goto er;}

getdisplay(col, xe, ye);
sleep(500);
if (findimage(1, #start_game[0][0], 0, #X, #Y, 0, 0, xe, ye, r1, r1, r1, r1, r1, r1, p1, 1, -1)!=1){messagebox ("Íå íàøëè èãðó."); goto er;}
stx=X+68; sty=Y+3; fx=X+237; fy=Y+173;
rx=fx-stx; ry=fy-sty;

Xk[0][0]=14; Yk[0][0]=14;//24
mouse (LEFT, X+257, Y+50);

for (nx=0; nx<7; nx++)
{
for (ny=0; ny<7; ny++)
{
Xk[nx][ny]=Xk[0][0]+nx*24;
Yk[nx][ny]=Yk[0][0]+ny*24;
}
}

lo:
if (find()==-1) goto er;
hod();
sleep (100);
mouse (LEFT, X+257, Y+50);
jh: finddynamic(0, #Xf[0], #Yf[0], 0, 0, 0, 0, stx, sty, fx, fy, -1);
sleep(150);
if (finddynamic(1, #Xf[0], #Yf[0], 1, 1, 5, 5, stx, sty, fx, fy, -1)==1){sleep(50); goto jh;}
goto lo;


er:;

function find()
{
int kol=0, k, k1;
ss: screen (#screen_game[0][0], stx, sty, fx, fy, -1);
k=0; k1=0;
for (int n=0; n<8; n++)
{
k=findimage(-1, #fishki[n][0][0], -1, #Xf[0], #Yf[0], 0, 0, rx, ry, r, r, r, r, r, r, p, 1, #screen_game[0][0]);
k1=k1+k;
for (int a=0; a<k; a++)
{
for (nx=0; nx<7; nx++)
{
for (ny=0; ny<7; ny++)
{
if (Xk[nx][ny]-(Xf[a]+10)<10 && (Xf[a]+10)-Xk[nx][ny]<10 && Yk[nx][ny]-(Yf[a]+10)<10 && (Yf[a]+10)-Yk[nx][ny]<10)
{
Nk[nx][ny]=n;
goto df;
}
}
}
df:;
}
}
if (k1!=49)
{
sleep(100);
kol++;
if (kol<5)goto ss;
else return -1;
}

return 1;
}


function hod()
{
kamen=6;
{
for (nx=0; nx<8; nx++)
{
for (ny=6; ny>-1; ny--)
{

ax=Nk[nx][ny];bx=Nk[nx+1][ny];
Nk[nx][ny]=bx;Nk[nx+1][ny]=ax;

if (nx!=6)
{

if ((Nk[nx][ny]==Nk[nx][0] && Nk[nx][ny]==Nk[nx][1] && Nk[nx][ny]==Nk[nx][2] )
|| (Nk[nx][ny]==Nk[nx][1] && Nk[nx][ny]==Nk[nx][2] && Nk[nx][ny]==Nk[nx][3] )
|| (Nk[nx][ny]==Nk[nx][2] && Nk[nx][ny]==Nk[nx][3] && Nk[nx][ny]==Nk[nx][4] )
|| (Nk[nx][ny]==Nk[nx][3] && Nk[nx][ny]==Nk[nx][4] && Nk[nx][ny]==Nk[nx][5] )
|| (Nk[nx][ny]==Nk[nx][4] && Nk[nx][ny]==Nk[nx][5] && Nk[nx][ny]==Nk[nx][6] )
|| (Nk[nx][ny]==Nk[0][ny] && Nk[nx][ny]==Nk[1][ny] && Nk[nx][ny]==Nk[2][ny] )
|| (Nk[nx][ny]==Nk[1][ny] && Nk[nx][ny]==Nk[2][ny] && Nk[nx][ny]==Nk[3][ny] )
|| (Nk[nx][ny]==Nk[2][ny] && Nk[nx][ny]==Nk[3][ny] && Nk[nx][ny]==Nk[4][ny])
|| (Nk[nx][ny]==Nk[3][ny] && Nk[nx][ny]==Nk[4][ny] && Nk[nx][ny]==Nk[5][ny] )
|| (Nk[nx][ny]==Nk[4][ny] && Nk[nx][ny]==Nk[5][ny] && Nk[nx][ny]==Nk[6][ny] )
|| (Nk[nx+1][ny]==Nk[nx+1][0] && Nk[nx+1][ny]==Nk[nx+1][1] && Nk[nx+1][ny]==Nk[nx+1][2] )
|| (Nk[nx+1][ny]==Nk[nx+1][1] && Nk[nx+1][ny]==Nk[nx+1][2] && Nk[nx+1][ny]==Nk[nx+1][3] )
|| (Nk[nx+1][ny]==Nk[nx+1][2] && Nk[nx+1][ny]==Nk[nx+1][3] && Nk[nx+1][ny]==Nk[nx+1][4])
|| (Nk[nx+1][ny]==Nk[nx+1][3] && Nk[nx+1][ny]==Nk[nx+1][4] && Nk[nx+1][ny]==Nk[nx+1][5] )
|| (Nk[nx+1][ny]==Nk[nx+1][4] && Nk[nx+1][ny]==Nk[nx+1][5] && Nk[nx+1][ny]==Nk[nx+1][6] ))
{
mouse_hod (stx+Xk[nx][ny], sty+Yk[nx][ny], stx+Xk[nx+1][ny], sty+Yk[nx+1][ny]);
return;
}


}
Nk[nx][ny]=ax;Nk[nx+1][ny]=bx;

//////////////////////////////////
ax=Nk[nx][ny];bx=Nk[nx][ny-1];
Nk[nx][ny]=bx;Nk[nx][ny-1]=ax;

if (ny!=0)
{

if ((Nk[nx][ny]==Nk[0][ny] && Nk[nx][ny]==Nk[1][ny] && Nk[nx][ny]==Nk[2][ny] )
|| (Nk[nx][ny]==Nk[1][ny] && Nk[nx][ny]==Nk[2][ny] && Nk[nx][ny]==Nk[3][ny])
|| (Nk[nx][ny]==Nk[2][ny] && Nk[nx][ny]==Nk[3][ny] && Nk[nx][ny]==Nk[4][ny])
|| (Nk[nx][ny]==Nk[3][ny] && Nk[nx][ny]==Nk[4][ny] && Nk[nx][ny]==Nk[5][ny])
|| (Nk[nx][ny]==Nk[4][ny] && Nk[nx][ny]==Nk[5][ny] && Nk[nx][ny]==Nk[6][ny] )
|| (Nk[nx][ny]==Nk[nx][6] && Nk[nx][ny]==Nk[nx][5] && Nk[nx][ny]==Nk[nx][4])
|| (Nk[nx][ny]==Nk[nx][5] && Nk[nx][ny]==Nk[nx][4] && Nk[nx][ny]==Nk[nx][3] )
|| (Nk[nx][ny]==Nk[nx][4] && Nk[nx][ny]==Nk[nx][3] && Nk[nx][ny]==Nk[nx][2] )
|| (Nk[nx][ny]==Nk[nx][3] && Nk[nx][ny]==Nk[nx][2] && Nk[nx][ny]==Nk[nx][1] )
|| (Nk[nx][ny-1]==Nk[0][ny-1] && Nk[nx][ny-1]==Nk[1][ny-1] && Nk[nx][ny-1]==Nk[2][ny-1] )
|| (Nk[nx][ny-1]==Nk[1][ny-1] && Nk[nx][ny-1]==Nk[2][ny-1] && Nk[nx][ny-1]==Nk[3][ny-1] )
|| (Nk[nx][ny-1]==Nk[2][ny-1] && Nk[nx][ny-1]==Nk[3][ny-1] && Nk[nx][ny-1]==Nk[4][ny-1] )
|| (Nk[nx][ny-1]==Nk[3][ny-1] && Nk[nx][ny-1]==Nk[4][ny-1] && Nk[nx][ny-1]==Nk[5][ny-1] )
|| (Nk[nx][ny-1]==Nk[4][ny-1] && Nk[nx][ny-1]==Nk[5][ny-1] && Nk[nx][ny-1]==Nk[6][ny-1] ))
{
mouse_hod (stx+Xk[nx][ny], sty+Yk[nx][ny], stx+Xk[nx][ny-1], sty+Yk[nx][ny-1]);
return;
}


}
Nk[nx][ny]=ax;Nk[nx][ny-1]=bx;
}

}



}
}

function mouse_hod(int x1, int y1, int x2, int y2)
{
mouse (LEFT, x1, y1);
sleep(500);
mouse (LEFT, x2, y2);
}



function load_image()
{
if (loadimage (#start_game[0][0], "C:\3_v_ryad\start_game.bmp")<1) return -1;
for (int n=0; n<8; n++)
{
if (loadimage (#fishki[n][0][0], "C:\3_v_ryad\"+format(n)+".bmp")<1) return -1;
}
return 1;
}

(Отредактировано автором: 28 Мая, 2016 - 17:59:46)

 
 Top
Semos
Отправлено: 12 Июня, 2016 - 08:22:41
Post Id



Пользователь
Прохожий


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




В общем вот что получилось: ищет в первую очередь 4 или 5 фишек, если такого нет, перебор вариантов для максимального количества фишек на поле.
CODE:
int r=55, p=70, r1=10, p1=90;
int start_game[14][8], fishki[8][25][25], screen_game[182][182];
int Z,X, Y, col, xe, ye, stx, sty, fx, fy, rx, ry, nx, ny,ax,bx;
int Xk[7][7], Yk[7][7], Nk[7][7],Knk[7][7], KL[7][7], Xf[49], Yf[49];
if (load_image()==-1)messagebox ("Îøèáêà çàãðóçêè ðèñóíêà.");
getdisplay(col, xe, ye);
sleep(500);
if (findimage(1, #start_game[0][0], 0, #X, #Y, 0, 0, xe, ye, r1, r1, r1, r1, r1, r1, p1, 1, -1)!=1)messagebox ("Íå íàøëè èãðó.");
stx=X+68; sty=Y+3; fx=X+237; fy=Y+173;
rx=fx-stx; ry=fy-sty;
Xk[0][0]=14; Yk[0][0]=14;
mouse (LEFT, X+257, Y+50);
for (nx=0; nx<7; nx++)
{
for (ny=0; ny<7; ny++)
{
Xk[nx][ny]=Xk[0][0]+nx*24;
Yk[nx][ny]=Yk[0][0]+ny*24;
}
}
lo:
find();
hod();
mouse (LEFT, X+257, Y+50);
sleep (1000);
jh: finddynamic(0, #Xf[0], #Yf[0], 0, 0, 0, 0, stx, sty, fx, fy, -1);
sleep(150);
if (finddynamic(1, #Xf[0], #Yf[0], 1, 1, 5, 5, stx, sty, fx, fy, -1)==1){sleep(50); goto jh;}
goto lo;
function find()
{
int kol=0, k, k1;
ss: screen (#screen_game[0][0], stx, sty, fx, fy, -1);
k=0; k1=0;
for (int n=0; n<8; n++)
{
k=findimage(-1, #fishki[n][0][0], -1, #Xf[0], #Yf[0], 0, 0, rx, ry, r, r, r, r, r, r, p, 1, #screen_game[0][0]);
k1=k1+k;
for (int a=0; a<k; a++)
{
for (nx=0; nx<7; nx++)
{
for (ny=0; ny<7; ny++)
{
if (Xk[nx][ny]-(Xf[a]+10)<10 && (Xf[a]+10)-Xk[nx][ny]<10 && Yk[nx][ny]-(Yf[a]+10)<10 && (Yf[a]+10)-Yk[nx][ny]<10)
{
Nk[nx][ny]=n;
Knk[nx][ny]=n;
goto df;
}
}
}
df:;
}
}
if (k1!=49)
{
sleep(100);
kol++;
if (kol<5)goto ss;
else return -1;
}
return 1;
}
function hod()
{
int ox=0,oy=0,l=0;
int mana=0;
int obmenX=0,obmenY=0;
int ax[2];
int five=0;
int est=0;
for (int nx=0; nx<7; nx++)
{
for (int ny=0; ny<7; ny++)
{

for (int g=0;g<2;g++)
{

int obmenX=0,obmenY=0;

for (int nxx=0; nxx<7; nxx++)
{
for (int nyy=0; nyy<7; nyy++)
{
Nk[nxx][nyy]=Knk[nxx][nyy];
}
}
if (g==0 && nx!=6 && Nk[nx][ny]!=Nk[nx+1][ny] && Nk[nx][ny]<8 && Nk[nx+1][ny]<8)
{
obmenX=1;
ax[0]=Nk[nx][ny];ax[1]=Nk[nx+1][ny];
Nk[nx][ny]=ax[1];Nk[nx+1][ny]=ax[0];
}
if (g==1 && ny!=0 && Nk[nx][ny]!=Nk[nx][ny-1] && Nk[nx][ny]<8 && Nk[nx][ny-1]<8)
{
obmenY=1;
ax[0]=Nk[nx][ny];ax[1]=Nk[nx][ny-1];
Nk[nx][ny]=ax[1];Nk[nx][ny-1]=ax[0];
}

if (obmenX==1 || obmenY==1)
{

int N=0;
esho:
est=0;

for (int nxx=0; nxx<7; nxx++)
{
for (int nyy=0; nyy<7; nyy++)
{
Z=Nk[nxx][nyy];
if (nyy<5 && Z!=9)
{

if ((Z==Nk[nxx][nyy+1] || Nk[nxx][nyy+1]==(Z+1)*10) && (Nk[nxx][nyy+2]==Z || Nk[nxx][nyy+2]==(Z+1)*10))
{
est=1;
Nk[nxx][nyy]=(Z+1)*10;
Nk[nxx][nyy+1]=(Z+1)*10;
Nk[nxx][nyy+2]=(Z+1)*10;
if (nyy<4 && (Nk[nxx][nyy+3]==(Z+1)*10 || Nk[nxx][nyy+3]==Z))
{
five=1;
Nk[nxx][nyy+3]=(Z+1)*10;
if (nyy<3 && (Nk[nxx][nyy+4]==(Z+1)*10 || Nk[nxx][nyy+4]==Z))
{
five=2;
Nk[nxx][nyy+4]=(Z+1)*10;
}
}
}
}
if (nxx<5 && Z!=9)
{
if ((Z==Nk[nxx+1][nyy] || Nk[nxx+1][nyy]==(Z+1)*10) && (Nk[nxx+2][nyy]==Z || Nk[nxx+2][nyy]==(Z+1)*10))
{
est=1;
Nk[nxx][nyy]=(Z+1)*10;
Nk[nxx+1][nyy]=(Z+1)*10;
Nk[nxx+2][nyy]=(Z+1)*10;
if (nxx<4 && (Nk[nxx+3][nyy]==(Z+1)*10 || Nk[nxx+3][nyy]==Z))
{
five=1;
Nk[nxx+3][nyy]=(Z+1)*10;
if (nxx<3 && (Nk[nxx+4][nyy]==(Z+1)*10 || Nk[nxx+4][nyy]==Z))
{
five=2;
Nk[nxx+4][nyy]=(Z+1)*10;
}
}
}
}
if (g==0 && five==2)goto hodX;
if (g==0 && five==1)goto hodX;
if (g==1 && five==2)goto hodY;
if (g==1 && five==1)goto hodY;
}
}
if (est==1)
{
for (int nxx=0; nxx<7; nxx++)
{
for (int nyy=6; nyy>-1; nyy--)
{
if (Nk[nxx][nyy]>8)
{
if (Nk[nxx][nyy]>9)N++;
for (int y=1; y<7;y++)
{
if (nyy-y>-1 && Nk[nxx][nyy-y]<8 && Nk[nxx][nyy]>8)
{
Nk[nxx][nyy]=Nk[nxx][nyy-y];
Nk[nxx][nyy-y]=9;
}
}
if (Nk[nxx][nyy]>9)Nk[nxx][nyy]=9;
}
}
}
goto esho;
}
if (N!=0 && mana<N || (mana==N && ny>oy))
{
mana=N;
if (obmenX==1){ox=nx;oy=ny;l=0;}
if (obmenY==1){ox=nx;oy=ny;l=1;}
}
}
}
}
}
if (l==0)
{
mouse_hod (stx+Xk[ox][oy], sty+Yk[ox][oy], stx+Xk[ox+1][oy], sty+Yk[ox+1][oy]);
return;
}
if (l==1)
{
mouse_hod (stx+Xk[ox][oy], sty+Yk[ox][oy], stx+Xk[ox][oy-1], sty+Yk[ox][oy-1]);
return;
}
hodX:
mouse_hod (stx+Xk[nx][ny], sty+Yk[nx][ny], stx+Xk[nx+1][ny], sty+Yk[nx+1][ny]);
return;
hodY:
mouse_hod (stx+Xk[nx][ny], sty+Yk[nx][ny], stx+Xk[nx][ny-1], sty+Yk[nx][ny-1]);
return;
}
function mouse_hod(int x1, int y1, int x2, int y2)
{
mouse (LEFT, x1, y1);
sleep(800);
mouse (LEFT, x2, y2);
}
function load_image()
{
if (loadimage (#start_game[0][0], "C:\3_v_ryad\start_game.bmp")<1) return -1;
for (int n=0; n<8; n++)
{
if (loadimage (#fishki[n][0][0], "C:\3_v_ryad\"+format(n)+".bmp")<1) return -1;
}
return 1;
}
 
 Top
ShotGumm
Отправлено: 24 Мая, 2018 - 22:45:55
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 1
Дата рег-ции: Май 2018  
Репутация: 0




Если не сложно, то хотелось бы поподробнее разобрать работу данного скрипта, с комментариями.
В шапке данной игрушки нет и самому поэкспериментировать возможность отсутствует, в ролике на ютубе автор так же воздержался от подробного описания работы (на подобии того как разбиралась игра Music Wars, там все предельно ясно изложено)

В связи с чем прошу прошу помочь разобраться)

з.ы. для понимания моих целей следует упомянуть, что есть желание написать бота для игрушки Gems of war. Частично желаемую информацию подчерпнул из ролика Music wars, но дальше написания просто кликера дело не пошло, по функционалу Кибор выполняет задачи на уровне EasyScript'a. Но очевидно, что потенциал куда больше)
 
 Top
konctantin777
Отправлено: 07 Сентября, 2018 - 19:29:04
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1152
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




Тоже всю голову сломал какой можно придумать алгоритм, чтобы всё методом перебора не запоминать (
 
 Top
Zireael
Отправлено: 08 Сентября, 2018 - 02:37:43
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
какой можно придумать алгоритм

В чём сложность?
Находятся все картинки, заносятся в массив в виде чисел, что-то вроде:
 Цитата:
0 1 4 0 2
2 1 3 1 4
0 4 0 0 1
3 2 1 4 2
4 2 0 1 3

Ищутся пары чисел, например в 3 строке есть два 0, проверяются соседние ячейки на наличие 0. в третьей строке вначале 0, т. е. возможен ход чтобы собрать три 0 в ряд.
 
 Top
Страниц (4): [1] 2 3 4 »
Сейчас эту тему просматривают: 3 (гостей: 3, зарегистрированных: 0)
« Готовые скрипты »


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




Powered by