diff --git a/Fase1.h b/Fase1.h index 0c1840a9bf487308b3f0b949dde89dde2ea5d03d..ac226d0fa95680229be851297a98eeda96c92bab 100644 --- a/Fase1.h +++ b/Fase1.h @@ -1,8 +1,8 @@ -void fase1(Window win,bool sair,int andou_b[],int andou_c[],int andou_d[],int andou_e[],int correr[],bool *puxa,int *tlep,int *cx,int *cy,Magia fireball[4][2],int *energia,bool redraw,ALLEGRO_BITMAP *map,int cont,int i,int j,bool *temneon,int desx[4],int desy[4],int xneon[4],int yneon[4],ALLEGRO_BITMAP **neons,ALLEGRO_BITMAP *chars,int cor[4],ALLEGRO_BITMAP *frente,ALLEGRO_FONT *font5,ALLEGRO_BITMAP **fireballs,int explox[4][2],int exploy[4][2],ALLEGRO_BITMAP* explosion, Pessoa *pessoas) +void fase1(Window win,bool sair,int correr[],bool *puxa,int *tlep,int *cx,int *cy,Magia fireball[4][2],int *energia,bool redraw,ALLEGRO_BITMAP *map,int cont,int i,int j,bool *temneon,int desx[4],int desy[4],int xneon[4],int yneon[4],ALLEGRO_BITMAP **neons,ALLEGRO_BITMAP *chars,int cor[4],ALLEGRO_BITMAP *frente,ALLEGRO_FONT *font5,ALLEGRO_BITMAP **fireballs,int explox[4][2],int exploy[4][2],ALLEGRO_BITMAP* explosion, Pessoa *pessoas) { char** matriz; ALLEGRO_BITMAP *tiles; - int mapsize,xtile[TAM],ytile[TAM],xcorte[TAM],ycorte[TAM], njogadores = 5; + int mapsize,xtile[TAM],ytile[TAM],xcorte[TAM],ycorte[TAM], njogadores = 4; FILE *mapa,*errext; cx[0]=100; @@ -55,9 +55,9 @@ void fase1(Window win,bool sair,int andou_b[],int andou_c[],int andou_d[],int an graphdeinit(win); exit(1); } else if(ev.type == ALLEGRO_EVENT_KEY_DOWN) { // Detecta se apertaram alguma tecla. - keyboard_down(ev.keyboard.keycode,andou_b,andou_c,andou_d,andou_e,correr,puxa,tlep,cx,cy,fireball,energia,pessoas); + keyboard_down(ev.keyboard.keycode,correr,puxa,tlep,cx,cy,fireball,energia,pessoas); } else if(ev.type == ALLEGRO_EVENT_KEY_UP) { // Detecta se soltaram alguma tecla. - keyboard_up(ev.keyboard.keycode,andou_b,andou_c,andou_d,andou_e,correr,puxa,&sair,pessoas); + keyboard_up(ev.keyboard.keycode,correr,puxa,&sair,pessoas); } else if (al_is_event_queue_empty(win.event_queue)) { // Nao ocorreu nenhum evento. /* Imprime */ redraw = false; // Fica true quando Timer acaba @@ -71,9 +71,9 @@ void fase1(Window win,bool sair,int andou_b[],int andou_c[],int andou_d[],int an //usa_magias(andou_b,andou_c,andou_d,andou_e,cx,cy,fireball) - flash(andou_b,andou_c,andou_d,andou_e,energia,cx,cy,tlep,matriz,pessoas); + flash(pessoas,energia,cx,cy,tlep,matriz); - usa_magias(andou_b,andou_c,andou_d,andou_e,energia,cx,cy,matriz,fireball,pessoas); + usa_magias(energia,cx,cy,matriz,fireball,pessoas); for(int h=0;h<4;h++) { for(j=0;j<2;j++) { @@ -81,7 +81,7 @@ void fase1(Window win,bool sair,int andou_b[],int andou_c[],int andou_d[],int an al_draw_bitmap(fireballs[fireball[h][j].d],fireball[h][j].x,fireball[h][j].y,0); //al_rest(4); } - if(fireball[h][j].explosao==true) { // Enquanto explox = 288 e exploy = 224, ele nao immprime a explosao. + if(fireball[h][j].explosao == true) { // Enquanto explox = 288 e exploy = 224, ele nao immprime a explosao. // Entao o esquema eh zerar eles e dai o programa come�a a contagem e a impressao. explox[h][j] = exploy[i][j] = 0; fireball[h][j].explosao = false; @@ -99,14 +99,14 @@ void fase1(Window win,bool sair,int andou_b[],int andou_c[],int andou_d[],int an } } - tira_neon(puxa,temneon,cx,cy,andou_b,andou_c,andou_d,andou_e,pessoas); + tira_neon(puxa,temneon,cx,cy,pessoas); for(i=0;i<4;i++) // Pra nao contar como se estivesse sempre tentando puxar. puxa[i] = false; - imprime_4_chars_for(cont,desx,desy,cx,cy,andou_b,andou_c,andou_d,andou_e,correr,energia,xneon,yneon,matriz,neons,chars,cor,temneon,njogadores,pessoas); + imprime_4_chars_for(cont,desx,desy,cx,cy,correr,energia,xneon,yneon,matriz,neons,chars,cor,temneon,njogadores,pessoas); - IA(andou_b,andou_c,andou_d,andou_e,pessoas); + IA(pessoas); if(cont==CONT) cont=0; @@ -114,7 +114,7 @@ void fase1(Window win,bool sair,int andou_b[],int andou_c[],int andou_d[],int an if(energia[i]<100) energia[i]++; - desconta_energia(andou_b,andou_c,andou_d,andou_e,correr,energia,pessoas); + desconta_energia(correr,energia,pessoas); al_draw_bitmap(frente,0,0,0); diff --git a/bin/neon b/bin/neon index d553b5c5b91ecf47b6e21356ffd09aa76e16325e..f4ba3c2b9d3da47d3b5390ac40018dc61f2e7be4 100755 Binary files a/bin/neon and b/bin/neon differ diff --git a/colisao.c b/colisao.c index b9270c49f90adfb1bfec2f3027af030855404d60..a663b5035fb9cc7a34ee6b3cb89428bfce75ee2c 100644 --- a/colisao.c +++ b/colisao.c @@ -22,7 +22,7 @@ char** le_matriz(FILE *fp) return matriz; } -int contato_proximo(int *cx,int *cy,int *andou_b,int *andou_c,int *andou_d,int *andou_e,int i,int j, Pessoa *p) +int contato_proximo(int *cx,int *cy,int i,int j, Pessoa *p) { // I eh o char que tah realizando a acao, J eh o cara que talvez foi atacado / puxado o neon if(p[i].andou_c == 1 || (p[i].andou_b == 0 && p[i].andou_c == 0 && p[i].andou_d == 0 && p[i].andou_e == 0)) { // Olhando pra cima. for(j=0;j<4;j++) { diff --git a/colisao.h b/colisao.h index 4b2faf74c7966ef89f1770f3bd3429c332a005fb..ace21f18ec1a18cd9434383b89d9c06ea0a68552 100644 --- a/colisao.h +++ b/colisao.h @@ -50,7 +50,7 @@ char** le_matriz(FILE *fp); bool colisao(int,int,char**,int); int colidiu(char** map,int x,int y,int caso,int cx[],int cy[],int eu); int colisao_fireball(char** m,int x,int y,int d); -int contato_proximo(int *cx,int *cy,int *andou_b,int *andou_c,int *andou_d,int *andou_e,int i,int j, Pessoa *p); +int contato_proximo(int *cx,int *cy,int i,int j, Pessoa *p); int contato_proximo_direcionado(int x,int y,int *cx,int *cy,int i,int j,int d); diff --git a/ia.c b/ia.c index be4ea893d5ef080fb625db67b6a025ca95ed6dfd..33dafdc24d5a184d0a549f272ecccbe621c190de 100644 --- a/ia.c +++ b/ia.c @@ -1,6 +1,6 @@ #include "ia.h" -void IA(int *andou_b,int *andou_c,int *andou_d,int *andou_e, Pessoa *p) +void IA(Pessoa *p) { int menor_dist[4]={1000,1000,1000,1000}; int pessoa_perto[4]; diff --git a/ia.h b/ia.h index e5ed697f0fda9aaf785ecc7a183e4f7df158089c..122623658a8ae69420a6ed1d5778bba65d5768be 100644 --- a/ia.h +++ b/ia.h @@ -4,6 +4,6 @@ #include <math.h> #include "colisao.h" -void IA(int *andou_b,int *andou_c,int *andou_d,int *andou_e, Pessoa *p); +void IA(Pessoa *p); #endif \ No newline at end of file diff --git a/imprime.c b/imprime.c index 8fc71d4620e52fa9376519f0b3f6212bd7a22baa..31e74afda62bb26e3133bfbe39be88bdf48b9f94 100644 --- a/imprime.c +++ b/imprime.c @@ -15,7 +15,7 @@ void imprime_char(int cx,int cy,int a,int b,int selx,int sely,ALLEGRO_BITMAP *ch return ; } -int imprime_4_chars_for(int cont,int desx[],int desy[],int cx[],int cy[],int andou_b[],int andou_c[],int andou_d[],int andou_e[],int correr[],int energia[],int xneon[],int yneon[],char** matriz,ALLEGRO_BITMAP** neons,ALLEGRO_BITMAP *chars,int *cor,bool *temneon,int njogadores, Pessoa *p) +int imprime_4_chars_for(int cont,int desx[],int desy[],int cx[],int cy[],int correr[],int energia[],int xneon[],int yneon[],char** matriz,ALLEGRO_BITMAP** neons,ALLEGRO_BITMAP *chars,int *cor,bool *temneon,int njogadores, Pessoa *p) { puts("Imprimindo chars..."); int i,j,selecx,selecy,char4; @@ -58,7 +58,7 @@ int imprime_4_chars_for(int cont,int desx[],int desy[],int cx[],int cy[],int and printf("Imprimindo char %d\n", i); - if(andou_b[i] == 1) + if((p[i].andou_b) == 1) { if(colidiu(matriz,cx[i]/4,cy[i]/4,0,cx,cy,i) == 1) { @@ -66,44 +66,49 @@ int imprime_4_chars_for(int cont,int desx[],int desy[],int cx[],int cy[],int and } cy[i] += 4*correr[i]; desy[i]=0+128*char4; - if(!andou_e[i] && !andou_d[i] && !andou_c[i]) + if(!(p[i].andou_e) && !(p[i].andou_d) && !(p[i].andou_c)) imprime_char(cx[i],cy[i],p[i].desx,p[i].desy,desx[i],desy[i],chars); } - if(andou_e[i] == 1) + printf("Primeiro if completo! "); + if((p[i].andou_e) == 1) { + puts("Entrei no primeiro if!"); if(colidiu(matriz,cx[i]/4,cy[i]/4,1,cx,cy,i) == 1) { // O 1(um) tah ali porque eh o caso de andar pra esquerda. cx[i] += 4*correr[i]; // Como colidiu, ele "anda" pra tr�s, o que faz ele nao se mexer. } cx[i] -= 4*correr[i]; desy[i]=32+128*char4; - if(!andou_d[i] && !andou_c[i]) + if(!(p[i].andou_d) && !(p[i].andou_c)) imprime_char(cx[i],cy[i],p[i].desx,p[i].desy,desx[i],desy[i],chars); } - if(andou_d[i] == 1) + printf("Segundo if completo! "); + if((p[i].andou_d) == 1) { if(colidiu(matriz,cx[i]/4,cy[i]/4,3,cx,cy,i) == 1) { // O 3(tres) tah ali porque eh o caso de andar pra direita. cx[i] -= 4*correr[i]; // Como colidiu, ele "anda" pra tr�s, o que faz ele nao se mexer. } cx[i] += 4*correr[i]; desy[i]=64+128*char4; - if(!andou_c[i]) + if(!(p[i].andou_c)) imprime_char(cx[i],cy[i],p[i].desx,p[i].desy,desx[i],desy[i],chars); } - if(andou_c[i] == 1) { + printf("Terceiro if completo! "); + if((p[i].andou_c) == 1) { if(colidiu(matriz,cx[i]/4,cy[i]/4,2,cx,cy,i) == 1) { // O 2(dois) tah ali porque eh o caso de andar pra cima. cy[i] += 4*correr[i]; // Como colidiu, ele "anda" pra tr�s, o que faz ele nao se mexer. } cy[i] -= 4*correr[i]; desy[i]=96+128*char4; imprime_char(cx[i],cy[i],p[i].desx,p[i].desy,desx[i],desy[i],chars); - if(andou_d[i] == 1 && andou_e[i]==0) + if((p[i].andou_d) == 1 && (p[i].andou_e)==0) imprime_neon(xneon[i]+4*correr[i],yneon[i],neons[i],temneon[i]); - else if(andou_e[i] == 1 && andou_d[i]==0) + else if((p[i].andou_e) == 1 && (p[i].andou_d)==0) imprime_neon(xneon[i]-4*correr[i],yneon[i],neons[i],temneon[i]); else imprime_neon(xneon[i],yneon[i],neons[i],temneon[i]); } - if(!andou_b[i] && !andou_c[i] && !andou_d[i] && !andou_e[i]) { // Nao andou. + printf("Quarto if completo!\n"); + if(!(p[i].andou_b) && !(p[i].andou_c) && !(p[i].andou_d) && !(p[i].andou_e)) { // Nao andou. imprime_char(cx[i],cy[i],p[i].desx,p[i].desy,32,96,chars); imprime_neon(xneon[i],yneon[i],neons[p[i].time-1],temneon[i]); } diff --git a/imprime.h b/imprime.h index fc26345db96f29f68fd566f00d5fe20b8038cff1..4d6f5fdaa9d56a26e0162fd3dc086ef75dd1be4f 100644 --- a/imprime.h +++ b/imprime.h @@ -23,4 +23,4 @@ void imprime_char(int cx,int cy,int a,int b,int selx,int sely,ALLEGRO_BITMAP *chars); void imprime_neon(int x,int y,ALLEGRO_BITMAP* neon,bool temneon); -int imprime_4_chars_for(int cont,int desx[],int desy[],int cx[],int cy[],int andou_b[],int andou_c[],int andou_d[],int andou_e[],int correr[],int energia[],int xneon[],int yneon[],char** matriz,ALLEGRO_BITMAP** neons,ALLEGRO_BITMAP *chars,int *cor,bool *temneon,int njogadores, Pessoa *p); +int imprime_4_chars_for(int cont,int desx[],int desy[],int cx[],int cy[],int correr[],int energia[],int xneon[],int yneon[],char** matriz,ALLEGRO_BITMAP** neons,ALLEGRO_BITMAP *chars,int *cor,bool *temneon,int njogadores, Pessoa *p); diff --git a/include/Fase1.h b/include/Fase1.h index 0c1840a9bf487308b3f0b949dde89dde2ea5d03d..ac226d0fa95680229be851297a98eeda96c92bab 100755 --- a/include/Fase1.h +++ b/include/Fase1.h @@ -1,8 +1,8 @@ -void fase1(Window win,bool sair,int andou_b[],int andou_c[],int andou_d[],int andou_e[],int correr[],bool *puxa,int *tlep,int *cx,int *cy,Magia fireball[4][2],int *energia,bool redraw,ALLEGRO_BITMAP *map,int cont,int i,int j,bool *temneon,int desx[4],int desy[4],int xneon[4],int yneon[4],ALLEGRO_BITMAP **neons,ALLEGRO_BITMAP *chars,int cor[4],ALLEGRO_BITMAP *frente,ALLEGRO_FONT *font5,ALLEGRO_BITMAP **fireballs,int explox[4][2],int exploy[4][2],ALLEGRO_BITMAP* explosion, Pessoa *pessoas) +void fase1(Window win,bool sair,int correr[],bool *puxa,int *tlep,int *cx,int *cy,Magia fireball[4][2],int *energia,bool redraw,ALLEGRO_BITMAP *map,int cont,int i,int j,bool *temneon,int desx[4],int desy[4],int xneon[4],int yneon[4],ALLEGRO_BITMAP **neons,ALLEGRO_BITMAP *chars,int cor[4],ALLEGRO_BITMAP *frente,ALLEGRO_FONT *font5,ALLEGRO_BITMAP **fireballs,int explox[4][2],int exploy[4][2],ALLEGRO_BITMAP* explosion, Pessoa *pessoas) { char** matriz; ALLEGRO_BITMAP *tiles; - int mapsize,xtile[TAM],ytile[TAM],xcorte[TAM],ycorte[TAM], njogadores = 5; + int mapsize,xtile[TAM],ytile[TAM],xcorte[TAM],ycorte[TAM], njogadores = 4; FILE *mapa,*errext; cx[0]=100; @@ -55,9 +55,9 @@ void fase1(Window win,bool sair,int andou_b[],int andou_c[],int andou_d[],int an graphdeinit(win); exit(1); } else if(ev.type == ALLEGRO_EVENT_KEY_DOWN) { // Detecta se apertaram alguma tecla. - keyboard_down(ev.keyboard.keycode,andou_b,andou_c,andou_d,andou_e,correr,puxa,tlep,cx,cy,fireball,energia,pessoas); + keyboard_down(ev.keyboard.keycode,correr,puxa,tlep,cx,cy,fireball,energia,pessoas); } else if(ev.type == ALLEGRO_EVENT_KEY_UP) { // Detecta se soltaram alguma tecla. - keyboard_up(ev.keyboard.keycode,andou_b,andou_c,andou_d,andou_e,correr,puxa,&sair,pessoas); + keyboard_up(ev.keyboard.keycode,correr,puxa,&sair,pessoas); } else if (al_is_event_queue_empty(win.event_queue)) { // Nao ocorreu nenhum evento. /* Imprime */ redraw = false; // Fica true quando Timer acaba @@ -71,9 +71,9 @@ void fase1(Window win,bool sair,int andou_b[],int andou_c[],int andou_d[],int an //usa_magias(andou_b,andou_c,andou_d,andou_e,cx,cy,fireball) - flash(andou_b,andou_c,andou_d,andou_e,energia,cx,cy,tlep,matriz,pessoas); + flash(pessoas,energia,cx,cy,tlep,matriz); - usa_magias(andou_b,andou_c,andou_d,andou_e,energia,cx,cy,matriz,fireball,pessoas); + usa_magias(energia,cx,cy,matriz,fireball,pessoas); for(int h=0;h<4;h++) { for(j=0;j<2;j++) { @@ -81,7 +81,7 @@ void fase1(Window win,bool sair,int andou_b[],int andou_c[],int andou_d[],int an al_draw_bitmap(fireballs[fireball[h][j].d],fireball[h][j].x,fireball[h][j].y,0); //al_rest(4); } - if(fireball[h][j].explosao==true) { // Enquanto explox = 288 e exploy = 224, ele nao immprime a explosao. + if(fireball[h][j].explosao == true) { // Enquanto explox = 288 e exploy = 224, ele nao immprime a explosao. // Entao o esquema eh zerar eles e dai o programa come�a a contagem e a impressao. explox[h][j] = exploy[i][j] = 0; fireball[h][j].explosao = false; @@ -99,14 +99,14 @@ void fase1(Window win,bool sair,int andou_b[],int andou_c[],int andou_d[],int an } } - tira_neon(puxa,temneon,cx,cy,andou_b,andou_c,andou_d,andou_e,pessoas); + tira_neon(puxa,temneon,cx,cy,pessoas); for(i=0;i<4;i++) // Pra nao contar como se estivesse sempre tentando puxar. puxa[i] = false; - imprime_4_chars_for(cont,desx,desy,cx,cy,andou_b,andou_c,andou_d,andou_e,correr,energia,xneon,yneon,matriz,neons,chars,cor,temneon,njogadores,pessoas); + imprime_4_chars_for(cont,desx,desy,cx,cy,correr,energia,xneon,yneon,matriz,neons,chars,cor,temneon,njogadores,pessoas); - IA(andou_b,andou_c,andou_d,andou_e,pessoas); + IA(pessoas); if(cont==CONT) cont=0; @@ -114,7 +114,7 @@ void fase1(Window win,bool sair,int andou_b[],int andou_c[],int andou_d[],int an if(energia[i]<100) energia[i]++; - desconta_energia(andou_b,andou_c,andou_d,andou_e,correr,energia,pessoas); + desconta_energia(correr,energia,pessoas); al_draw_bitmap(frente,0,0,0); diff --git a/include/colisao.h b/include/colisao.h index 4b2faf74c7966ef89f1770f3bd3429c332a005fb..ace21f18ec1a18cd9434383b89d9c06ea0a68552 100755 --- a/include/colisao.h +++ b/include/colisao.h @@ -50,7 +50,7 @@ char** le_matriz(FILE *fp); bool colisao(int,int,char**,int); int colidiu(char** map,int x,int y,int caso,int cx[],int cy[],int eu); int colisao_fireball(char** m,int x,int y,int d); -int contato_proximo(int *cx,int *cy,int *andou_b,int *andou_c,int *andou_d,int *andou_e,int i,int j, Pessoa *p); +int contato_proximo(int *cx,int *cy,int i,int j, Pessoa *p); int contato_proximo_direcionado(int x,int y,int *cx,int *cy,int i,int j,int d); diff --git a/include/ia.h b/include/ia.h index e5ed697f0fda9aaf785ecc7a183e4f7df158089c..122623658a8ae69420a6ed1d5778bba65d5768be 100755 --- a/include/ia.h +++ b/include/ia.h @@ -4,6 +4,6 @@ #include <math.h> #include "colisao.h" -void IA(int *andou_b,int *andou_c,int *andou_d,int *andou_e, Pessoa *p); +void IA(Pessoa *p); #endif \ No newline at end of file diff --git a/include/imprime.h b/include/imprime.h index fc26345db96f29f68fd566f00d5fe20b8038cff1..4d6f5fdaa9d56a26e0162fd3dc086ef75dd1be4f 100755 --- a/include/imprime.h +++ b/include/imprime.h @@ -23,4 +23,4 @@ void imprime_char(int cx,int cy,int a,int b,int selx,int sely,ALLEGRO_BITMAP *chars); void imprime_neon(int x,int y,ALLEGRO_BITMAP* neon,bool temneon); -int imprime_4_chars_for(int cont,int desx[],int desy[],int cx[],int cy[],int andou_b[],int andou_c[],int andou_d[],int andou_e[],int correr[],int energia[],int xneon[],int yneon[],char** matriz,ALLEGRO_BITMAP** neons,ALLEGRO_BITMAP *chars,int *cor,bool *temneon,int njogadores, Pessoa *p); +int imprime_4_chars_for(int cont,int desx[],int desy[],int cx[],int cy[],int correr[],int energia[],int xneon[],int yneon[],char** matriz,ALLEGRO_BITMAP** neons,ALLEGRO_BITMAP *chars,int *cor,bool *temneon,int njogadores, Pessoa *p); diff --git a/include/keys.h b/include/keys.h index 346d26c769f964d9a5e6a3c10cdc4025d4bd09c7..43d1ac94400b3240392c19a27d62c6927afd695f 100755 --- a/include/keys.h +++ b/include/keys.h @@ -16,8 +16,8 @@ //extern Pessoa pessoa[4]; -void keyboard_down(int evkeyboardkeycode,int *andou_b,int *andou_c,int *andou_d,int *andou_e,int *correr,bool *puxa,int *tlep,int *cx,int *cy,Magia (*fireball)[2],int *energia, Pessoa *p); -void keyboard_up(int evkeyboardkeycode,int *andou_b,int *andou_c,int *andou_d,int *andou_e,int *correr,bool *puxa,bool *sair, Pessoa *p); +void keyboard_down(int evkeyboardkeycode,int *correr,bool *puxa,int *tlep,int *cx,int *cy,Magia (*fireball)[2],int *energia, Pessoa *p); +void keyboard_up(int evkeyboardkeycode,int *correr,bool *puxa,bool *sair, Pessoa *p); void teclas_iniciais(); /* diff --git a/include/magia.h b/include/magia.h index 991f09b669717d54722c960abe70960501d1579f..7c0a316cd11656d19a85ab2cada2e4e77c3852c1 100755 --- a/include/magia.h +++ b/include/magia.h @@ -3,10 +3,9 @@ #include "colisao.h" -void tira_neon(bool *puxa,bool *temneon,int *cx,int *cy,int *andou_b,int *andou_c,int *andou_d,int *andou_e, Pessoa *p); -void desconta_energia(int andou_b[],int andou_c[],int andou_d[],int andou_e[],int correr[],int energia[], Pessoa *p); -void usa_magias(int *andou_b,int *andou_c,int *andou_d,int *andou_e,int *energia,int *cx,int *cy,char **matriz,Magia (*fb)[2], Pessoa *pessoas); -int calcula_direcao(int *andou_b,int *andou_c,int *andou_d,int *andou_e,int i); -void flash(int *andou_b,int *andou_c,int *andou_d,int *andou_e,int *energia,int *cx,int *cy,int *tlep,char **matriz, Pessoa *p); - +void tira_neon(bool *puxa,bool *temneon,int *cx,int *cy, Pessoa *p); +void desconta_energia(int correr[],int energia[], Pessoa *p); +void usa_magias(int *energia,int *cx,int *cy,char **matriz,Magia (*fb)[2], Pessoa *pessoas); +int calcula_direcao(Pessoa *p,int i); +void flash(Pessoa *p,int *energia,int *cx,int *cy,int *tlep,char **matriz); #endif \ No newline at end of file diff --git a/keys.c b/keys.c index 196a983612ecd445c91055f7da77d8d841bd1d7d..bfe92a52b4eeb7cd9aff634083f8d07ffc2c5718 100644 --- a/keys.c +++ b/keys.c @@ -62,7 +62,7 @@ void teclas_iniciais() } */ -void keyboard_down(int evkeyboardkeycode,int *andou_b,int *andou_c,int *andou_d,int *andou_e,int *correr,bool *puxa,int *tlep,int *cx,int *cy,Magia (*fireball)[2],int *energia, Pessoa *p) +void keyboard_down(int evkeyboardkeycode,int *correr,bool *puxa,int *tlep,int *cx,int *cy,Magia (*fireball)[2],int *energia, Pessoa *p) { for(int i=0; i<4;i++) { if(p[i].comp==0) { @@ -116,7 +116,7 @@ void keyboard_down(int evkeyboardkeycode,int *andou_b,int *andou_c,int *andou_d, } -void keyboard_up(int evkeyboardkeycode,int *andou_b,int *andou_c,int *andou_d,int *andou_e,int *correr,bool *puxa,bool *sair, Pessoa *p) +void keyboard_up(int evkeyboardkeycode,int *correr,bool *puxa,bool *sair, Pessoa *p) { for(int i=0; i<4;i++) { if(p[i].comp==0) { diff --git a/keys.h b/keys.h index 346d26c769f964d9a5e6a3c10cdc4025d4bd09c7..43d1ac94400b3240392c19a27d62c6927afd695f 100644 --- a/keys.h +++ b/keys.h @@ -16,8 +16,8 @@ //extern Pessoa pessoa[4]; -void keyboard_down(int evkeyboardkeycode,int *andou_b,int *andou_c,int *andou_d,int *andou_e,int *correr,bool *puxa,int *tlep,int *cx,int *cy,Magia (*fireball)[2],int *energia, Pessoa *p); -void keyboard_up(int evkeyboardkeycode,int *andou_b,int *andou_c,int *andou_d,int *andou_e,int *correr,bool *puxa,bool *sair, Pessoa *p); +void keyboard_down(int evkeyboardkeycode,int *correr,bool *puxa,int *tlep,int *cx,int *cy,Magia (*fireball)[2],int *energia, Pessoa *p); +void keyboard_up(int evkeyboardkeycode,int *correr,bool *puxa,bool *sair, Pessoa *p); void teclas_iniciais(); /* diff --git a/lib/Fase1.h b/lib/Fase1.h index 0c1840a9bf487308b3f0b949dde89dde2ea5d03d..ac226d0fa95680229be851297a98eeda96c92bab 100755 --- a/lib/Fase1.h +++ b/lib/Fase1.h @@ -1,8 +1,8 @@ -void fase1(Window win,bool sair,int andou_b[],int andou_c[],int andou_d[],int andou_e[],int correr[],bool *puxa,int *tlep,int *cx,int *cy,Magia fireball[4][2],int *energia,bool redraw,ALLEGRO_BITMAP *map,int cont,int i,int j,bool *temneon,int desx[4],int desy[4],int xneon[4],int yneon[4],ALLEGRO_BITMAP **neons,ALLEGRO_BITMAP *chars,int cor[4],ALLEGRO_BITMAP *frente,ALLEGRO_FONT *font5,ALLEGRO_BITMAP **fireballs,int explox[4][2],int exploy[4][2],ALLEGRO_BITMAP* explosion, Pessoa *pessoas) +void fase1(Window win,bool sair,int correr[],bool *puxa,int *tlep,int *cx,int *cy,Magia fireball[4][2],int *energia,bool redraw,ALLEGRO_BITMAP *map,int cont,int i,int j,bool *temneon,int desx[4],int desy[4],int xneon[4],int yneon[4],ALLEGRO_BITMAP **neons,ALLEGRO_BITMAP *chars,int cor[4],ALLEGRO_BITMAP *frente,ALLEGRO_FONT *font5,ALLEGRO_BITMAP **fireballs,int explox[4][2],int exploy[4][2],ALLEGRO_BITMAP* explosion, Pessoa *pessoas) { char** matriz; ALLEGRO_BITMAP *tiles; - int mapsize,xtile[TAM],ytile[TAM],xcorte[TAM],ycorte[TAM], njogadores = 5; + int mapsize,xtile[TAM],ytile[TAM],xcorte[TAM],ycorte[TAM], njogadores = 4; FILE *mapa,*errext; cx[0]=100; @@ -55,9 +55,9 @@ void fase1(Window win,bool sair,int andou_b[],int andou_c[],int andou_d[],int an graphdeinit(win); exit(1); } else if(ev.type == ALLEGRO_EVENT_KEY_DOWN) { // Detecta se apertaram alguma tecla. - keyboard_down(ev.keyboard.keycode,andou_b,andou_c,andou_d,andou_e,correr,puxa,tlep,cx,cy,fireball,energia,pessoas); + keyboard_down(ev.keyboard.keycode,correr,puxa,tlep,cx,cy,fireball,energia,pessoas); } else if(ev.type == ALLEGRO_EVENT_KEY_UP) { // Detecta se soltaram alguma tecla. - keyboard_up(ev.keyboard.keycode,andou_b,andou_c,andou_d,andou_e,correr,puxa,&sair,pessoas); + keyboard_up(ev.keyboard.keycode,correr,puxa,&sair,pessoas); } else if (al_is_event_queue_empty(win.event_queue)) { // Nao ocorreu nenhum evento. /* Imprime */ redraw = false; // Fica true quando Timer acaba @@ -71,9 +71,9 @@ void fase1(Window win,bool sair,int andou_b[],int andou_c[],int andou_d[],int an //usa_magias(andou_b,andou_c,andou_d,andou_e,cx,cy,fireball) - flash(andou_b,andou_c,andou_d,andou_e,energia,cx,cy,tlep,matriz,pessoas); + flash(pessoas,energia,cx,cy,tlep,matriz); - usa_magias(andou_b,andou_c,andou_d,andou_e,energia,cx,cy,matriz,fireball,pessoas); + usa_magias(energia,cx,cy,matriz,fireball,pessoas); for(int h=0;h<4;h++) { for(j=0;j<2;j++) { @@ -81,7 +81,7 @@ void fase1(Window win,bool sair,int andou_b[],int andou_c[],int andou_d[],int an al_draw_bitmap(fireballs[fireball[h][j].d],fireball[h][j].x,fireball[h][j].y,0); //al_rest(4); } - if(fireball[h][j].explosao==true) { // Enquanto explox = 288 e exploy = 224, ele nao immprime a explosao. + if(fireball[h][j].explosao == true) { // Enquanto explox = 288 e exploy = 224, ele nao immprime a explosao. // Entao o esquema eh zerar eles e dai o programa come�a a contagem e a impressao. explox[h][j] = exploy[i][j] = 0; fireball[h][j].explosao = false; @@ -99,14 +99,14 @@ void fase1(Window win,bool sair,int andou_b[],int andou_c[],int andou_d[],int an } } - tira_neon(puxa,temneon,cx,cy,andou_b,andou_c,andou_d,andou_e,pessoas); + tira_neon(puxa,temneon,cx,cy,pessoas); for(i=0;i<4;i++) // Pra nao contar como se estivesse sempre tentando puxar. puxa[i] = false; - imprime_4_chars_for(cont,desx,desy,cx,cy,andou_b,andou_c,andou_d,andou_e,correr,energia,xneon,yneon,matriz,neons,chars,cor,temneon,njogadores,pessoas); + imprime_4_chars_for(cont,desx,desy,cx,cy,correr,energia,xneon,yneon,matriz,neons,chars,cor,temneon,njogadores,pessoas); - IA(andou_b,andou_c,andou_d,andou_e,pessoas); + IA(pessoas); if(cont==CONT) cont=0; @@ -114,7 +114,7 @@ void fase1(Window win,bool sair,int andou_b[],int andou_c[],int andou_d[],int an if(energia[i]<100) energia[i]++; - desconta_energia(andou_b,andou_c,andou_d,andou_e,correr,energia,pessoas); + desconta_energia(correr,energia,pessoas); al_draw_bitmap(frente,0,0,0); diff --git a/lib/libcolisao.a b/lib/libcolisao.a index 67099d20dd90fdcf2b3d7293188b7a4eb8fb6f9c..9eba32f9615ca1528b2231b50d026a8cec40c465 100755 Binary files a/lib/libcolisao.a and b/lib/libcolisao.a differ diff --git a/lib/libgrafico.a b/lib/libgrafico.a index 67099d20dd90fdcf2b3d7293188b7a4eb8fb6f9c..9eba32f9615ca1528b2231b50d026a8cec40c465 100755 Binary files a/lib/libgrafico.a and b/lib/libgrafico.a differ diff --git a/lib/libia.a b/lib/libia.a index 67099d20dd90fdcf2b3d7293188b7a4eb8fb6f9c..9eba32f9615ca1528b2231b50d026a8cec40c465 100755 Binary files a/lib/libia.a and b/lib/libia.a differ diff --git a/lib/libimprime.a b/lib/libimprime.a index 67099d20dd90fdcf2b3d7293188b7a4eb8fb6f9c..9eba32f9615ca1528b2231b50d026a8cec40c465 100755 Binary files a/lib/libimprime.a and b/lib/libimprime.a differ diff --git a/lib/libkeys.a b/lib/libkeys.a index 67099d20dd90fdcf2b3d7293188b7a4eb8fb6f9c..9eba32f9615ca1528b2231b50d026a8cec40c465 100755 Binary files a/lib/libkeys.a and b/lib/libkeys.a differ diff --git a/lib/libmagia.a b/lib/libmagia.a index 67099d20dd90fdcf2b3d7293188b7a4eb8fb6f9c..9eba32f9615ca1528b2231b50d026a8cec40c465 100755 Binary files a/lib/libmagia.a and b/lib/libmagia.a differ diff --git a/lib/libmap.a b/lib/libmap.a index 67099d20dd90fdcf2b3d7293188b7a4eb8fb6f9c..9eba32f9615ca1528b2231b50d026a8cec40c465 100755 Binary files a/lib/libmap.a and b/lib/libmap.a differ diff --git a/lib/libneon.a b/lib/libneon.a index 67099d20dd90fdcf2b3d7293188b7a4eb8fb6f9c..9eba32f9615ca1528b2231b50d026a8cec40c465 100755 Binary files a/lib/libneon.a and b/lib/libneon.a differ diff --git a/libcolisao.a b/libcolisao.a index 67099d20dd90fdcf2b3d7293188b7a4eb8fb6f9c..9eba32f9615ca1528b2231b50d026a8cec40c465 100644 Binary files a/libcolisao.a and b/libcolisao.a differ diff --git a/libgrafico.a b/libgrafico.a index 67099d20dd90fdcf2b3d7293188b7a4eb8fb6f9c..9eba32f9615ca1528b2231b50d026a8cec40c465 100644 Binary files a/libgrafico.a and b/libgrafico.a differ diff --git a/libia.a b/libia.a index 67099d20dd90fdcf2b3d7293188b7a4eb8fb6f9c..9eba32f9615ca1528b2231b50d026a8cec40c465 100644 Binary files a/libia.a and b/libia.a differ diff --git a/libimprime.a b/libimprime.a index 67099d20dd90fdcf2b3d7293188b7a4eb8fb6f9c..9eba32f9615ca1528b2231b50d026a8cec40c465 100644 Binary files a/libimprime.a and b/libimprime.a differ diff --git a/libkeys.a b/libkeys.a index 67099d20dd90fdcf2b3d7293188b7a4eb8fb6f9c..9eba32f9615ca1528b2231b50d026a8cec40c465 100644 Binary files a/libkeys.a and b/libkeys.a differ diff --git a/libmagia.a b/libmagia.a index 67099d20dd90fdcf2b3d7293188b7a4eb8fb6f9c..9eba32f9615ca1528b2231b50d026a8cec40c465 100644 Binary files a/libmagia.a and b/libmagia.a differ diff --git a/libmap.a b/libmap.a index 67099d20dd90fdcf2b3d7293188b7a4eb8fb6f9c..9eba32f9615ca1528b2231b50d026a8cec40c465 100644 Binary files a/libmap.a and b/libmap.a differ diff --git a/magia.c b/magia.c index f5a319b2e4a99926fe0311d283b48d86d09818a3..3ac7f08793577145cc93ab3f6a0e0a1e7283e2a1 100644 --- a/magia.c +++ b/magia.c @@ -1,25 +1,25 @@ #include "magia.h" -void tira_neon(bool *puxa,bool *temneon,int *cx,int *cy,int *andou_b,int *andou_c,int *andou_d,int *andou_e, Pessoa *p) +void tira_neon(bool *puxa,bool *temneon,int *cx,int *cy, Pessoa *p) { int j; for(int i=0;i<4;i++) { if(puxa[i]) { - if(j = contato_proximo(cx,cy,andou_b,andou_c,andou_d,andou_e,i,j,p) != 5) + if(j = contato_proximo(cx,cy,i,j,p) != 5) temneon[j] = false; } } return ; } -void desconta_energia(int andou_b[],int andou_c[],int andou_d[],int andou_e[],int correr[],int energia[], Pessoa *p) +void desconta_energia(int correr[],int energia[], Pessoa *p) { for(int i=0;i<4;i++) if((p[i].andou_b == 1 || p[i].andou_c == 1 || p[i].andou_d == 1 || p[i].andou_e == 1) && correr[i] == 2 ) // Andou com correr ativado. energia[i] -= 3; } -void usa_magias(int *andou_b,int *andou_c,int *andou_d,int *andou_e,int *energia,int *cx,int *cy,char **matriz,Magia (*fb)[2], Pessoa *pessoas) +void usa_magias(int *energia,int *cx,int *cy,char **matriz,Magia (*fb)[2], Pessoa *p) { int i,j,k; for(i=0; i<4; ++i) { @@ -27,7 +27,7 @@ void usa_magias(int *andou_b,int *andou_c,int *andou_d,int *andou_e,int *energia break ; for(j=0;j<2;j++) { // O mesmo player pode ter jogado duas fireballs. if(fb[i][j].d == -1) - fb[i][j].d = calcula_direcao(andou_b,andou_c,andou_d,andou_e,i); /* Numeros de direçao no colisao.h */ + fb[i][j].d = calcula_direcao(p,i); /* Numeros de direçao no colisao.h */ for(k=0;k<4;k++) { if(contato_proximo_direcionado(fb[i][j].x,fb[i][j].y,cx,cy,i,k,fb[i][j].d) == k) { k = k; // Isso nao faz nada, tem que substituir por tirar vida de k. @@ -79,28 +79,28 @@ void usa_magias(int *andou_b,int *andou_c,int *andou_d,int *andou_e,int *energia return ; } -int calcula_direcao(int *andou_b,int *andou_c,int *andou_d,int *andou_e,int i) +int calcula_direcao(Pessoa *p,int i) { - if(andou_c[i]==1 || (andou_b[i]==0 && andou_c[i]==0 && andou_d[i]==0 && andou_e[i]==0)) { // Olhando pra cima. + if(p[i].andou_c == 1 || (p[i].andou_b == 0 && p[i].andou_c == 0 && p[i].andou_d == 0 && p[i].andou_e == 0)) { // Olhando pra cima. al_flip_display; return 0; } - if(andou_d[i]==1) { // Olhando pra direita. + if(p[i].andou_d == 1) { // Olhando pra direita. al_flip_display; return 1; } - if(andou_e[i]==1) { // Olhando pra esquerda. + if(p[i].andou_e == 1) { // Olhando pra esquerda. al_flip_display; return 2; } - if(andou_b[i]==1) { // Olhando pra baixo. + if(p[i].andou_b == 1) { // Olhando pra baixo. al_flip_display; return 3; } return -1; // Deu erro. } -void flash(int *andou_b,int *andou_c,int *andou_d,int *andou_e,int *energia,int *cx,int *cy,int *tlep,char **matriz, Pessoa *p) +void flash(Pessoa *p,int *energia,int *cx,int *cy,int *tlep,char **matriz) { int i,j; for(i=0;i<4;i++) { diff --git a/magia.h b/magia.h index 991f09b669717d54722c960abe70960501d1579f..7c0a316cd11656d19a85ab2cada2e4e77c3852c1 100644 --- a/magia.h +++ b/magia.h @@ -3,10 +3,9 @@ #include "colisao.h" -void tira_neon(bool *puxa,bool *temneon,int *cx,int *cy,int *andou_b,int *andou_c,int *andou_d,int *andou_e, Pessoa *p); -void desconta_energia(int andou_b[],int andou_c[],int andou_d[],int andou_e[],int correr[],int energia[], Pessoa *p); -void usa_magias(int *andou_b,int *andou_c,int *andou_d,int *andou_e,int *energia,int *cx,int *cy,char **matriz,Magia (*fb)[2], Pessoa *pessoas); -int calcula_direcao(int *andou_b,int *andou_c,int *andou_d,int *andou_e,int i); -void flash(int *andou_b,int *andou_c,int *andou_d,int *andou_e,int *energia,int *cx,int *cy,int *tlep,char **matriz, Pessoa *p); - +void tira_neon(bool *puxa,bool *temneon,int *cx,int *cy, Pessoa *p); +void desconta_energia(int correr[],int energia[], Pessoa *p); +void usa_magias(int *energia,int *cx,int *cy,char **matriz,Magia (*fb)[2], Pessoa *pessoas); +int calcula_direcao(Pessoa *p,int i); +void flash(Pessoa *p,int *energia,int *cx,int *cy,int *tlep,char **matriz); #endif \ No newline at end of file diff --git a/neon.c b/neon.c index cd52dd36efaff9fe2350cc1d3b8e9d53910fd881..91f4f60e4892534b767999419c9500dacb68f709 100644 --- a/neon.c +++ b/neon.c @@ -11,7 +11,7 @@ int main() { /* Coisas relacionadas aos chars */ - int cont=0,i,j,x,y,*andou_b,*andou_c,*andou_d,*andou_e,*correr,*energia; + int cont=0,i,j,x,y,*correr,*energia; int *cx,*cy,*desx,*desy;/*[4]={200,250,300,350},cy[4]={400,400,400,400},desx[4]={64,64,64,64},desy[4]={0,0,0,0}; */// cx = coordenada X, vetor de 4 pra incluir ateh 4 chars. /* Coisas relacioinadas ao mapa */ int mapsize,xtile[TAM],ytile[TAM],xcorte[TAM],ycorte[TAM]; @@ -21,19 +21,11 @@ int main() int tlep[4]={0,0,0,0},explox[4][2],exploy[4][2]; Pessoa *pessoas; -/* - andou_b = (int*) malloc (NJOGADORES * sizeof(int)); - andou_c = (int*) malloc (NJOGADORES * sizeof(int)); - andou_d = (int*) malloc (NJOGADORES * sizeof(int)); - andou_e = (int*) malloc (NJOGADORES * sizeof(int)); -*/ + pessoas = (Pessoa *) malloc(sizeof(Pessoa) * NJOGADORES); for(i=0; i<NJOGADORES; ++i) { // Inicializacoes da estrutura Pessoa - pessoas[i].andou_b = 0; - pessoas[i].andou_c = 0; - pessoas[i].andou_d = 0; - pessoas[i].andou_e = 0; + pessoas[i].andou_b = pessoas[i].andou_c = pessoas[i].andou_d = pessoas[i].andou_e = 0; } energia = (int*) malloc (NJOGADORES * sizeof(int)); @@ -47,12 +39,6 @@ int main() desy[i]=0; desx[i]=64; correr[i]=1; - /* - andou_b[i]=0; - andou_c[i]=0; - andou_d[i]=0; - andou_e[i]=0; - */ energia[i]=100; } @@ -201,7 +187,7 @@ int main() /* Opera o jogo */ if(abremenu(win,chars,pessoas)==1) { - fase1(win,sair,andou_b,andou_c,andou_d,andou_e,correr,puxa,tlep,cx,cy,fireball,energia,redraw,map,cont,i,j,temneon,desx,desy,xneon,yneon,neons,chars,cor,frente,font5,fireballs,explox,exploy,explosion,pessoas); + fase1(win,sair,correr,puxa,tlep,cx,cy,fireball,energia,redraw,map,cont,i,j,temneon,desx,desy,xneon,yneon,neons,chars,cor,frente,font5,fireballs,explox,exploy,explosion,pessoas); } graphdeinit(win); exit(1);