Jump to content
Joel11

[OpenGL] Inteligência Artificial

Recommended Posts

Joel11

Ora boas noites,

estou-me a iniciar em OpenGl e estou a tentar desenvolver um programa/jogo, mas preciso de ter uma inteligencia artificial que permita procurar caminhos, por exemplo, no pacman, os fantasmas(as coisas que nos comem), batem nas paredes e escolhem para onde vão, ou procuram sempre o caminho onde nós estamos para nos poderem comer, o que pretendo é mesmo este último caso, procuro uma inteligencia que permite fazer esse tipo de busca para tentar incorporar no que já tenho

Cmps,

Share this post


Link to post
Share on other sites
pikax

AI nao tem nada a ver com OpenGL.

Como e' o teu mapa? e' feito com matriz?

  • Vote 1

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
HappyHippyHippo

mesmo que o teu jogo envolva física de objectos, esse tipo de programação nunca deverá ser feito com bibliotecas de visualização.

dica para tudo (seja OpenGL ou outro qualquer) : separa sempre a lógica da aplicação/jogo da visualização !

  • Vote 1

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
HappyHippyHippo

tenta criar um grafo do mapa sendo os nós do grafo os cruzamentos.

depois é só escolher o menor caminho entre os objectos que pretendes mover.

  • Vote 1

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Joel11

Consegui elaborar uma solução,vou deixar aí para quem um dia se encontrar na mesmo situação que eu!Cmps

void search(void)

{

GLint board_x, board_z;

GLint up1, left1, right1;

GLint num_rnd, dir_tmp;

DWORD start_clock;

start_clock = GetTickCount() ;

switch(g_search.dir)

{

case UP : g_search.z_pos -= pace; break;

case LEFT : g_search.x_pos += pace; break;

case DOWN : g_search.z_pos += pace; break;

case RIGHT : g_search.x_pos -= pace; break;

}

if( (g_search.x_pos % edge == 0) &&

(g_search.z_pos % edge == 0) )

{

up1 = 0;

left1 = 0;

right1 = 0;

board_x = (int) ((g_search.x_pos + edge/2) / edge);

board_z = (int) ((g_search.z_pos + edge/2) / edge);

switch(g_search.dir )

{

case UP : if(board[board_x][board_z - 1] == 0)

{

up1 = 1;

}

if(board[board_x + 1][board_z] == 0)

{

right1 = 1;

}

if(board[board_x - 1][board_z] == 0)

{

left1 = 1;

}

break;

case LEFT : if(board[board_x + 1][board_z] == 0)

{

up1 = 1;

}

if(board[board_x][board_z + 1] == 0)

{

right1 = 1;

}

if(board[board_x][board_z - 1] == 0)

{

left1 = 1;

}

break;

case DOWN : if(board[board_x][board_z + 1] == 0)

{

up1 = 1;

}

if(board[board_x - 1][board_z] == 0)

{

right1 = 1;

}

if(board[board_x + 1][board_z] == 0)

{

left1 = 1;

}

break;

case RIGHT : if(board[board_x - 1][board_z] == 0)

{

up1 = 1;

}

if(board[board_x][board_z - 1] == 0)

{

right1 = 1;

}

if(board[board_x][board_z + 1] == 0)

{

left1 = 1;

}

break;

}

dir_tmp = g_search.dir;

if(up1)

{

if(left1 && right1)

{

num_rnd = rand() % 10;

if(num_rnd < 4) g_search.dir = dir_tmp;

else if(num_rnd > 6) g_search.dir = (dir_tmp + 1) & 3;

else g_search.dir = (dir_tmp - 1) & 3;

}

else

if(left1)

{

if(!(rand()%2)) g_search.dir = dir_tmp ;

else g_search.dir = (dir_tmp - 1) & 3;

}

else

if(right1)

{

if(!(rand()%2)) g_search.dir = dir_tmp ;

else g_search.dir = (dir_tmp + 1) & 3;

}

else g_search.dir = dir_tmp ;

}

else

{

if(left1 && right1)

{

if(!(rand()%2)) g_search.dir = (dir_tmp + 1) & 3;

else g_search.dir = (dir_tmp - 1) & 3;

}

else

if(left1)

{

g_search.dir = (dir_tmp - 1) & 3;

}

else

if(right1)

{

g_search.dir = (dir_tmp + 1) & 3;

}

else g_search.dir = (dir_tmp + 2) & 3 ;

}

}

while( (GetTickCount() - start_clock) < 25) ;

}

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.