diff --git a/Fase1.h b/Fase1.h index bebfefa44bf967e2474681aa18d570f5f0a736fc..857a1347883e79c32539b2b683d72ad3c30dd8cd 100644 --- a/Fase1.h +++ b/Fase1.h @@ -1,12 +1,24 @@ -void fase1(Window win,bool sair,bool *puxa,int *tlep,Magia fireball[4][2],bool redraw,ALLEGRO_BITMAP *map,int cont,int i,int j,bool *temneon,ALLEGRO_BITMAP **neons,int cor[4],ALLEGRO_BITMAP *frente,ALLEGRO_FONT *font5,ALLEGRO_BITMAP **fireballs,int explox[4][2],int exploy[4][2],ALLEGRO_BITMAP* explosion,Pessoa *p,Sprite s) +void fase1(Window win,Magia fireball[4][2],ALLEGRO_FONT *font5,int explox[4][2],int exploy[4][2],Pessoa *p,Sprite s) { char** matriz; int mapsize,xtile[TAM],ytile[TAM],xcorte[TAM],ycorte[TAM], njogadores = 4; FILE *mapa,*errext; + ALLEGRO_BITMAP *map, *frente; + int i,j,k,cont = 0,*tlep,*cor; + bool redraw = false, sair = false, *puxa, *temneon; + + puxa = (bool *) malloc(sizeof(bool) * njogadores); + temneon = (bool *) malloc(sizeof(bool) * njogadores); + tlep = (int *) malloc(sizeof(int) * njogadores); + cor = (int *) malloc(sizeof(int) * njogadores); for(i=0; i<njogadores; ++i) { p[i].x = 100 + 50*i; p[i].y = 200; + puxa[i] = false; + temneon[i] = true; + tlep[i] = 0; + cor[i] = i+1; } errext = fopen("err.txt","w"); @@ -27,8 +39,6 @@ void fase1(Window win,bool sair,bool *puxa,int *tlep,Magia fireball[4][2],bool r matriz = le_matriz(fopen("Fases/F1/matriz.txt","r")); - puts("Inicializando o jogo..."); - al_flush_event_queue(win.event_queue); while (!sair) /* Pra sair, botoes como Esc, o X ali em cima direita,... transformam a variavel sair de false pra true, dai sai do while. */ { @@ -54,35 +64,32 @@ void fase1(Window win,bool sair,bool *puxa,int *tlep,Magia fireball[4][2],bool r al_draw_bitmap(map,0,0,0); cont++; - for(i=0; i<4; i++) // Faz parar de correr quando a energia acaba. + for(i=0; i<njogadores; i++) // Faz parar de correr quando a energia acaba. if(p[i].energia <= 0) p[i].correr = 1; - //usa_magias(andou_b,andou_c,andou_d,andou_e,cx,cy,fireball) - flash(p,tlep,matriz); usa_magias(matriz,fireball,p); - for(int h=0;h<4;h++) { + for(k=0;k<njogadores;k++) { for(j=0;j<2;j++) { - if(fireball[h][j].ativa == true) { - al_draw_bitmap(fireballs[fireball[h][j].d],fireball[h][j].x,fireball[h][j].y,0); - //al_rest(4); + if(fireball[k][j].ativa == true) { + al_draw_bitmap(s.fireballs[fireball[k][j].d],fireball[k][j].x,fireball[k][j].y,0); } - if(fireball[h][j].explosao == true) { // Enquanto explox = 288 e exploy = 224, ele nao immprime a explosao. + if(fireball[k][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; + explox[k][j] = exploy[i][j] = 0; + fireball[k][j].explosao = false; //contalinhaexplo = 0; } - if(explox[h][j] < 280 && exploy[h][j] < 220) { // Imprime a explosao. - al_draw_bitmap_region(explosion,explox[h][j],exploy[h][j],32,32,fireball[h][j].x,fireball[h][j].y,0); - explox[h][j] += 32; - if(explox[h][j] >= 288) { - exploy[h][j] += 32; - if(exploy[h][j] < 224) - explox[h][j] = 0; + if(explox[k][j] < 280 && exploy[k][j] < 220) { // Imprime a explosao. + al_draw_bitmap_region(s.explosion,explox[k][j],exploy[k][j],32,32,fireball[k][j].x,fireball[k][j].y,0); + explox[k][j] += 32; + if(explox[k][j] >= 288) { + exploy[k][j] += 32; + if(exploy[k][j] < 224) + explox[k][j] = 0; } } } @@ -93,13 +100,13 @@ void fase1(Window win,bool sair,bool *puxa,int *tlep,Magia fireball[4][2],bool r for(i=0;i<4;i++) // Pra nao contar como se estivesse sempre tentando puxar. puxa[i] = false; - imprime_4_chars_for(cont,matriz,neons,cor,temneon,njogadores,p,s); + imprime_4_chars_for(cont,matriz,cor,temneon,njogadores,p,s); IA(p); - if(cont==CONT) - cont=0; - for(i=0;i<4;i++) + if(cont == CONT) + cont = 0; + for(i=0; i<njogadores; ++i) if(p[i].energia < 100) p[i].energia++; @@ -110,7 +117,7 @@ void fase1(Window win,bool sair,bool *puxa,int *tlep,Magia fireball[4][2],bool r al_draw_text(font5,VERDE_LIMAO,20,600,0,"Player 1: Player 2: Player 3: Player 4:"); al_draw_text(font5,VERMELHO,20,620,0, "Vida : Vida : Vida : Vida :"); al_draw_text(font5,AZUL,20,640,0, "Energia : Energia : Energia : Energia :"); - for(i=0;i<4;i++) + for(i=0; i<njogadores; ++i) for(j=0; j< (p[i].energia/5);j++ ) al_draw_text(font5,AMARELO,100+200*i+4*j,640,0,"| "); //al_draw_textf(font5,VERDE_LIMAO,20,450,0,"%d",fireball[i][j].explosao); diff --git a/bin/neon b/bin/neon index 6d2816eda9829e6a173ed5114c87a542d0f1628a..4d2e07193f26682a664bae20d1e9187b559295a7 100755 Binary files a/bin/neon and b/bin/neon differ diff --git a/colisao.h b/colisao.h index 3bcdcdd76a0eb70650fcdc775b3e3b93f8dcf0e5..439a22cf6e4e6c9d5a9a528eb52d43aab76e9285 100644 --- a/colisao.h +++ b/colisao.h @@ -38,9 +38,9 @@ typedef struct Magia { typedef struct Sprite { //*tiles,*chars,*map,*frente,**neons,**fireballs,*explosion; - ALLEGRO_BITMAP *tiles; - //ALLEGRO_BITMAP - //ALLEGRO_BITMAP + ALLEGRO_BITMAP *tiles; // Usado pra coisas dos mapas. + ALLEGRO_BITMAP **fireballs, *explosion; // Sprite da bola de fogo (cima, dir, esq, baixo) + explosao da fireball. + ALLEGRO_BITMAP **neons; // Todos os neons (4 cores, na sequencia: amarelo - azul - verde - vermelho) //ALLEGRO_BITMAP //ALLEGRO_BITMAP ALLEGRO_BITMAP *chars; diff --git a/imprime.c b/imprime.c index f56a654753323327a6467813730620c236e02d91..c8a546709520112303c1c8ddb042a64db23fe1ce 100644 --- a/imprime.c +++ b/imprime.c @@ -14,7 +14,7 @@ inline void imprime_char(int cx,int cy,int a,int b,int selx,int sely,Sprite s) return ; } -int imprime_4_chars_for(int cont,char** matriz,ALLEGRO_BITMAP** neons,int *cor,bool *temneon,int njogadores,Pessoa *p,Sprite s) +int imprime_4_chars_for(int cont,char** matriz,int *cor,bool *temneon,int njogadores,Pessoa *p,Sprite s) { //puts("Imprimindo chars..."); int i,j,selecx,selecy,char4; @@ -98,16 +98,16 @@ int imprime_4_chars_for(int cont,char** matriz,ALLEGRO_BITMAP** neons,int *cor,b p[i].sely = 96 + 128*char4; imprime_char(p[i].x,p[i].y,p[i].desx,p[i].desy,p[i].selx,p[i].sely,s); if((p[i].andou_d) == 1 && (p[i].andou_e)==0) - imprime_neon(p[i].xneon+4*p[i].correr,p[i].yneon,neons[i],temneon[i]); + imprime_neon(p[i].xneon+4*p[i].correr,p[i].yneon,s.neons[i],temneon[i]); else if((p[i].andou_e) == 1 && (p[i].andou_d)==0) - imprime_neon(p[i].xneon-4*p[i].correr,p[i].yneon,neons[i],temneon[i]); + imprime_neon(p[i].xneon-4*p[i].correr,p[i].yneon,s.neons[i],temneon[i]); else - imprime_neon(p[i].xneon,p[i].yneon,neons[i],temneon[i]); + imprime_neon(p[i].xneon,p[i].yneon,s.neons[i],temneon[i]); } //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(p[i].x,p[i].y,p[i].desx,p[i].desy,32,96,s); - imprime_neon(p[i].xneon,p[i].yneon,neons[p[i].time-1],temneon[i]); + imprime_neon(p[i].xneon,p[i].yneon,s.neons[p[i].time-1],temneon[i]); } } //puts("Chars impressos!"); diff --git a/imprime.h b/imprime.h index e237cbb95a0acc271c6d2949bc5da485153749c0..ef3de9a96830d4e295b6a4f0f5261f8f8a956bd4 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,Sprite s); void imprime_neon(int x,int y,ALLEGRO_BITMAP* neon,bool temneon); -int imprime_4_chars_for(int cont,char** matriz,ALLEGRO_BITMAP** neons,int *cor,bool *temneon,int njogadores,Pessoa *p,Sprite s); +int imprime_4_chars_for(int cont,char** matriz,int *cor,bool *temneon,int njogadores,Pessoa *p,Sprite s); diff --git a/include/Fase1.h b/include/Fase1.h index cb6979b35026640e799b4406bf57a18e46703573..857a1347883e79c32539b2b683d72ad3c30dd8cd 100755 --- a/include/Fase1.h +++ b/include/Fase1.h @@ -1,13 +1,24 @@ -void fase1(Window win,bool sair,bool *puxa,int *tlep,Magia fireball[4][2],bool redraw,ALLEGRO_BITMAP *map,int cont,int i,int j,bool *temneon,ALLEGRO_BITMAP **neons,int cor[4],ALLEGRO_BITMAP *frente,ALLEGRO_FONT *font5,ALLEGRO_BITMAP **fireballs,int explox[4][2],int exploy[4][2],ALLEGRO_BITMAP* explosion,Pessoa *p,Sprite s) +void fase1(Window win,Magia fireball[4][2],ALLEGRO_FONT *font5,int explox[4][2],int exploy[4][2],Pessoa *p,Sprite s) { char** matriz; - //ALLEGRO_BITMAP *tiles; int mapsize,xtile[TAM],ytile[TAM],xcorte[TAM],ycorte[TAM], njogadores = 4; FILE *mapa,*errext; + ALLEGRO_BITMAP *map, *frente; + int i,j,k,cont = 0,*tlep,*cor; + bool redraw = false, sair = false, *puxa, *temneon; + + puxa = (bool *) malloc(sizeof(bool) * njogadores); + temneon = (bool *) malloc(sizeof(bool) * njogadores); + tlep = (int *) malloc(sizeof(int) * njogadores); + cor = (int *) malloc(sizeof(int) * njogadores); for(i=0; i<njogadores; ++i) { p[i].x = 100 + 50*i; p[i].y = 200; + puxa[i] = false; + temneon[i] = true; + tlep[i] = 0; + cor[i] = i+1; } errext = fopen("err.txt","w"); @@ -18,27 +29,16 @@ void fase1(Window win,bool sair,bool *puxa,int *tlep,Magia fireball[4][2],bool r fclose(errext); exit(1); } -/* - tiles = al_load_bitmap("Imgs/tiles.bmp"); - if(!tiles) { - fprintf(errext,"Falha ao abrir a imagem tiles."); - fclose(errext); - exit(1); - } -*/ + fscanf(mapa,"%i\n",&mapsize); for(i=0;i<mapsize+1;i++) fscanf(mapa,"%i %i %i %i\n",&xtile[i],&ytile[i],&xcorte[i],&ycorte[i]); - //al_convert_mask_to_alpha(tiles,al_map_rgb(255,0,255)); - map = cria_mapa(win,mapa,mapsize,xtile,ytile,xcorte,ycorte,s); frente = cria_frente(win,mapa,mapsize,xcorte,ycorte,xtile,ytile,s); // Obs: Confundi dentro da fun�ao, entao to passando invertido aqui. EH PROPOSITAL! matriz = le_matriz(fopen("Fases/F1/matriz.txt","r")); - puts("Inicializando o jogo..."); - al_flush_event_queue(win.event_queue); while (!sair) /* Pra sair, botoes como Esc, o X ali em cima direita,... transformam a variavel sair de false pra true, dai sai do while. */ { @@ -64,35 +64,32 @@ void fase1(Window win,bool sair,bool *puxa,int *tlep,Magia fireball[4][2],bool r al_draw_bitmap(map,0,0,0); cont++; - for(i=0; i<4; i++) // Faz parar de correr quando a energia acaba. + for(i=0; i<njogadores; i++) // Faz parar de correr quando a energia acaba. if(p[i].energia <= 0) p[i].correr = 1; - //usa_magias(andou_b,andou_c,andou_d,andou_e,cx,cy,fireball) - flash(p,tlep,matriz); usa_magias(matriz,fireball,p); - for(int h=0;h<4;h++) { + for(k=0;k<njogadores;k++) { for(j=0;j<2;j++) { - if(fireball[h][j].ativa == true) { - al_draw_bitmap(fireballs[fireball[h][j].d],fireball[h][j].x,fireball[h][j].y,0); - //al_rest(4); + if(fireball[k][j].ativa == true) { + al_draw_bitmap(s.fireballs[fireball[k][j].d],fireball[k][j].x,fireball[k][j].y,0); } - if(fireball[h][j].explosao == true) { // Enquanto explox = 288 e exploy = 224, ele nao immprime a explosao. + if(fireball[k][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; + explox[k][j] = exploy[i][j] = 0; + fireball[k][j].explosao = false; //contalinhaexplo = 0; } - if(explox[h][j] < 280 && exploy[h][j] < 220) { // Imprime a explosao. - al_draw_bitmap_region(explosion,explox[h][j],exploy[h][j],32,32,fireball[h][j].x,fireball[h][j].y,0); - explox[h][j] += 32; - if(explox[h][j] >= 288) { - exploy[h][j] += 32; - if(exploy[h][j] < 224) - explox[h][j] = 0; + if(explox[k][j] < 280 && exploy[k][j] < 220) { // Imprime a explosao. + al_draw_bitmap_region(s.explosion,explox[k][j],exploy[k][j],32,32,fireball[k][j].x,fireball[k][j].y,0); + explox[k][j] += 32; + if(explox[k][j] >= 288) { + exploy[k][j] += 32; + if(exploy[k][j] < 224) + explox[k][j] = 0; } } } @@ -103,13 +100,13 @@ void fase1(Window win,bool sair,bool *puxa,int *tlep,Magia fireball[4][2],bool r for(i=0;i<4;i++) // Pra nao contar como se estivesse sempre tentando puxar. puxa[i] = false; - imprime_4_chars_for(cont,matriz,neons,cor,temneon,njogadores,p,s); + imprime_4_chars_for(cont,matriz,cor,temneon,njogadores,p,s); IA(p); - if(cont==CONT) - cont=0; - for(i=0;i<4;i++) + if(cont == CONT) + cont = 0; + for(i=0; i<njogadores; ++i) if(p[i].energia < 100) p[i].energia++; @@ -120,7 +117,7 @@ void fase1(Window win,bool sair,bool *puxa,int *tlep,Magia fireball[4][2],bool r al_draw_text(font5,VERDE_LIMAO,20,600,0,"Player 1: Player 2: Player 3: Player 4:"); al_draw_text(font5,VERMELHO,20,620,0, "Vida : Vida : Vida : Vida :"); al_draw_text(font5,AZUL,20,640,0, "Energia : Energia : Energia : Energia :"); - for(i=0;i<4;i++) + for(i=0; i<njogadores; ++i) for(j=0; j< (p[i].energia/5);j++ ) al_draw_text(font5,AMARELO,100+200*i+4*j,640,0,"| "); //al_draw_textf(font5,VERDE_LIMAO,20,450,0,"%d",fireball[i][j].explosao); diff --git a/include/colisao.h b/include/colisao.h index 3bcdcdd76a0eb70650fcdc775b3e3b93f8dcf0e5..439a22cf6e4e6c9d5a9a528eb52d43aab76e9285 100755 --- a/include/colisao.h +++ b/include/colisao.h @@ -38,9 +38,9 @@ typedef struct Magia { typedef struct Sprite { //*tiles,*chars,*map,*frente,**neons,**fireballs,*explosion; - ALLEGRO_BITMAP *tiles; - //ALLEGRO_BITMAP - //ALLEGRO_BITMAP + ALLEGRO_BITMAP *tiles; // Usado pra coisas dos mapas. + ALLEGRO_BITMAP **fireballs, *explosion; // Sprite da bola de fogo (cima, dir, esq, baixo) + explosao da fireball. + ALLEGRO_BITMAP **neons; // Todos os neons (4 cores, na sequencia: amarelo - azul - verde - vermelho) //ALLEGRO_BITMAP //ALLEGRO_BITMAP ALLEGRO_BITMAP *chars; diff --git a/include/imprime.h b/include/imprime.h index e237cbb95a0acc271c6d2949bc5da485153749c0..ef3de9a96830d4e295b6a4f0f5261f8f8a956bd4 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,Sprite s); void imprime_neon(int x,int y,ALLEGRO_BITMAP* neon,bool temneon); -int imprime_4_chars_for(int cont,char** matriz,ALLEGRO_BITMAP** neons,int *cor,bool *temneon,int njogadores,Pessoa *p,Sprite s); +int imprime_4_chars_for(int cont,char** matriz,int *cor,bool *temneon,int njogadores,Pessoa *p,Sprite s); diff --git a/keys.c b/keys.c index 6d1df4b0aecacfdb0953fe8c34402ff282e34c66..1e716e1c8bb3db5893058e9c32c9e1f5228dfa50 100644 --- a/keys.c +++ b/keys.c @@ -67,28 +67,18 @@ void keyboard_down(int evkeyboardkeycode,bool *puxa,int *tlep,Magia (*fireball)[ for(int i=0; i<4; ++i) { if(p[i].comp==0) { if(evkeyboardkeycode == p[i].botao_char_int[0]) { - //andou_c[i] = 1; p[i].andou_c = 1; - } - if(evkeyboardkeycode == p[i].botao_char_int[1]) { - //andou_b[i] = 1; + } else if(evkeyboardkeycode == p[i].botao_char_int[1]) { p[i].andou_b = 1; - } - if(evkeyboardkeycode == p[i].botao_char_int[2]) { - //andou_d[i] = 1; + } else if(evkeyboardkeycode == p[i].botao_char_int[2]) { p[i].andou_d = 1; - } - if(evkeyboardkeycode == p[i].botao_char_int[3]) { - //andou_e[i] = 1; + } else if(evkeyboardkeycode == p[i].botao_char_int[3]) { p[i].andou_e = 1; - } - if(evkeyboardkeycode == p[i].botao_char_int[4]) { + } else if(evkeyboardkeycode == p[i].botao_char_int[4]) { p[i].correr = 2; - } - if(evkeyboardkeycode == p[i].botao_char_int[5]) { + } else if(evkeyboardkeycode == p[i].botao_char_int[5]) { puxa[i] = true; - } - if(evkeyboardkeycode == p[i].botao_char_int[6]) { + } else if(evkeyboardkeycode == p[i].botao_char_int[6]) { tlep[i] = 1; } } @@ -121,22 +111,14 @@ void keyboard_up(int evkeyboardkeycode,bool *puxa,bool *sair, Pessoa *p) for(int i=0; i<4; ++i) { if(p[i].comp == 0) { if(evkeyboardkeycode == p[i].botao_char_int[0]) { - //andou_c[i] = 0; p[i].andou_c = 0; - } - if(evkeyboardkeycode == p[i].botao_char_int[1]) { - //andou_b[i] = 0; + } else if(evkeyboardkeycode == p[i].botao_char_int[1]) { p[i].andou_b = 0; - } - if(evkeyboardkeycode == p[i].botao_char_int[2]) { - //andou_d[i] = 0; + } else if(evkeyboardkeycode == p[i].botao_char_int[2]) { p[i].andou_d = 0; - } - if(evkeyboardkeycode == p[i].botao_char_int[3]) { - //andou_e[i] = 0; + } else if(evkeyboardkeycode == p[i].botao_char_int[3]) { p[i].andou_e = 0; - } - if(evkeyboardkeycode == p[i].botao_char_int[4]) { + } else if(evkeyboardkeycode == p[i].botao_char_int[4]) { p[i].correr = 1; } } diff --git a/lib/Fase1.h b/lib/Fase1.h index cb6979b35026640e799b4406bf57a18e46703573..857a1347883e79c32539b2b683d72ad3c30dd8cd 100755 --- a/lib/Fase1.h +++ b/lib/Fase1.h @@ -1,13 +1,24 @@ -void fase1(Window win,bool sair,bool *puxa,int *tlep,Magia fireball[4][2],bool redraw,ALLEGRO_BITMAP *map,int cont,int i,int j,bool *temneon,ALLEGRO_BITMAP **neons,int cor[4],ALLEGRO_BITMAP *frente,ALLEGRO_FONT *font5,ALLEGRO_BITMAP **fireballs,int explox[4][2],int exploy[4][2],ALLEGRO_BITMAP* explosion,Pessoa *p,Sprite s) +void fase1(Window win,Magia fireball[4][2],ALLEGRO_FONT *font5,int explox[4][2],int exploy[4][2],Pessoa *p,Sprite s) { char** matriz; - //ALLEGRO_BITMAP *tiles; int mapsize,xtile[TAM],ytile[TAM],xcorte[TAM],ycorte[TAM], njogadores = 4; FILE *mapa,*errext; + ALLEGRO_BITMAP *map, *frente; + int i,j,k,cont = 0,*tlep,*cor; + bool redraw = false, sair = false, *puxa, *temneon; + + puxa = (bool *) malloc(sizeof(bool) * njogadores); + temneon = (bool *) malloc(sizeof(bool) * njogadores); + tlep = (int *) malloc(sizeof(int) * njogadores); + cor = (int *) malloc(sizeof(int) * njogadores); for(i=0; i<njogadores; ++i) { p[i].x = 100 + 50*i; p[i].y = 200; + puxa[i] = false; + temneon[i] = true; + tlep[i] = 0; + cor[i] = i+1; } errext = fopen("err.txt","w"); @@ -18,27 +29,16 @@ void fase1(Window win,bool sair,bool *puxa,int *tlep,Magia fireball[4][2],bool r fclose(errext); exit(1); } -/* - tiles = al_load_bitmap("Imgs/tiles.bmp"); - if(!tiles) { - fprintf(errext,"Falha ao abrir a imagem tiles."); - fclose(errext); - exit(1); - } -*/ + fscanf(mapa,"%i\n",&mapsize); for(i=0;i<mapsize+1;i++) fscanf(mapa,"%i %i %i %i\n",&xtile[i],&ytile[i],&xcorte[i],&ycorte[i]); - //al_convert_mask_to_alpha(tiles,al_map_rgb(255,0,255)); - map = cria_mapa(win,mapa,mapsize,xtile,ytile,xcorte,ycorte,s); frente = cria_frente(win,mapa,mapsize,xcorte,ycorte,xtile,ytile,s); // Obs: Confundi dentro da fun�ao, entao to passando invertido aqui. EH PROPOSITAL! matriz = le_matriz(fopen("Fases/F1/matriz.txt","r")); - puts("Inicializando o jogo..."); - al_flush_event_queue(win.event_queue); while (!sair) /* Pra sair, botoes como Esc, o X ali em cima direita,... transformam a variavel sair de false pra true, dai sai do while. */ { @@ -64,35 +64,32 @@ void fase1(Window win,bool sair,bool *puxa,int *tlep,Magia fireball[4][2],bool r al_draw_bitmap(map,0,0,0); cont++; - for(i=0; i<4; i++) // Faz parar de correr quando a energia acaba. + for(i=0; i<njogadores; i++) // Faz parar de correr quando a energia acaba. if(p[i].energia <= 0) p[i].correr = 1; - //usa_magias(andou_b,andou_c,andou_d,andou_e,cx,cy,fireball) - flash(p,tlep,matriz); usa_magias(matriz,fireball,p); - for(int h=0;h<4;h++) { + for(k=0;k<njogadores;k++) { for(j=0;j<2;j++) { - if(fireball[h][j].ativa == true) { - al_draw_bitmap(fireballs[fireball[h][j].d],fireball[h][j].x,fireball[h][j].y,0); - //al_rest(4); + if(fireball[k][j].ativa == true) { + al_draw_bitmap(s.fireballs[fireball[k][j].d],fireball[k][j].x,fireball[k][j].y,0); } - if(fireball[h][j].explosao == true) { // Enquanto explox = 288 e exploy = 224, ele nao immprime a explosao. + if(fireball[k][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; + explox[k][j] = exploy[i][j] = 0; + fireball[k][j].explosao = false; //contalinhaexplo = 0; } - if(explox[h][j] < 280 && exploy[h][j] < 220) { // Imprime a explosao. - al_draw_bitmap_region(explosion,explox[h][j],exploy[h][j],32,32,fireball[h][j].x,fireball[h][j].y,0); - explox[h][j] += 32; - if(explox[h][j] >= 288) { - exploy[h][j] += 32; - if(exploy[h][j] < 224) - explox[h][j] = 0; + if(explox[k][j] < 280 && exploy[k][j] < 220) { // Imprime a explosao. + al_draw_bitmap_region(s.explosion,explox[k][j],exploy[k][j],32,32,fireball[k][j].x,fireball[k][j].y,0); + explox[k][j] += 32; + if(explox[k][j] >= 288) { + exploy[k][j] += 32; + if(exploy[k][j] < 224) + explox[k][j] = 0; } } } @@ -103,13 +100,13 @@ void fase1(Window win,bool sair,bool *puxa,int *tlep,Magia fireball[4][2],bool r for(i=0;i<4;i++) // Pra nao contar como se estivesse sempre tentando puxar. puxa[i] = false; - imprime_4_chars_for(cont,matriz,neons,cor,temneon,njogadores,p,s); + imprime_4_chars_for(cont,matriz,cor,temneon,njogadores,p,s); IA(p); - if(cont==CONT) - cont=0; - for(i=0;i<4;i++) + if(cont == CONT) + cont = 0; + for(i=0; i<njogadores; ++i) if(p[i].energia < 100) p[i].energia++; @@ -120,7 +117,7 @@ void fase1(Window win,bool sair,bool *puxa,int *tlep,Magia fireball[4][2],bool r al_draw_text(font5,VERDE_LIMAO,20,600,0,"Player 1: Player 2: Player 3: Player 4:"); al_draw_text(font5,VERMELHO,20,620,0, "Vida : Vida : Vida : Vida :"); al_draw_text(font5,AZUL,20,640,0, "Energia : Energia : Energia : Energia :"); - for(i=0;i<4;i++) + for(i=0; i<njogadores; ++i) for(j=0; j< (p[i].energia/5);j++ ) al_draw_text(font5,AMARELO,100+200*i+4*j,640,0,"| "); //al_draw_textf(font5,VERDE_LIMAO,20,450,0,"%d",fireball[i][j].explosao); diff --git a/lib/libcolisao.a b/lib/libcolisao.a index 5ba9199c4b9057cd13d94efd0dc4f5dc62bf4abc..a0b0e640de6c3c4a2f6c9f0b8d9bd19a069cb571 100755 Binary files a/lib/libcolisao.a and b/lib/libcolisao.a differ diff --git a/lib/libgrafico.a b/lib/libgrafico.a index 5ba9199c4b9057cd13d94efd0dc4f5dc62bf4abc..a0b0e640de6c3c4a2f6c9f0b8d9bd19a069cb571 100755 Binary files a/lib/libgrafico.a and b/lib/libgrafico.a differ diff --git a/lib/libia.a b/lib/libia.a index 5ba9199c4b9057cd13d94efd0dc4f5dc62bf4abc..a0b0e640de6c3c4a2f6c9f0b8d9bd19a069cb571 100755 Binary files a/lib/libia.a and b/lib/libia.a differ diff --git a/lib/libimprime.a b/lib/libimprime.a index 5ba9199c4b9057cd13d94efd0dc4f5dc62bf4abc..a0b0e640de6c3c4a2f6c9f0b8d9bd19a069cb571 100755 Binary files a/lib/libimprime.a and b/lib/libimprime.a differ diff --git a/lib/libkeys.a b/lib/libkeys.a index 5ba9199c4b9057cd13d94efd0dc4f5dc62bf4abc..a0b0e640de6c3c4a2f6c9f0b8d9bd19a069cb571 100755 Binary files a/lib/libkeys.a and b/lib/libkeys.a differ diff --git a/lib/libmagia.a b/lib/libmagia.a index 5ba9199c4b9057cd13d94efd0dc4f5dc62bf4abc..a0b0e640de6c3c4a2f6c9f0b8d9bd19a069cb571 100755 Binary files a/lib/libmagia.a and b/lib/libmagia.a differ diff --git a/lib/libmap.a b/lib/libmap.a index 5ba9199c4b9057cd13d94efd0dc4f5dc62bf4abc..a0b0e640de6c3c4a2f6c9f0b8d9bd19a069cb571 100755 Binary files a/lib/libmap.a and b/lib/libmap.a differ diff --git a/lib/libneon.a b/lib/libneon.a index 5ba9199c4b9057cd13d94efd0dc4f5dc62bf4abc..a0b0e640de6c3c4a2f6c9f0b8d9bd19a069cb571 100755 Binary files a/lib/libneon.a and b/lib/libneon.a differ diff --git a/libcolisao.a b/libcolisao.a index 5ba9199c4b9057cd13d94efd0dc4f5dc62bf4abc..a0b0e640de6c3c4a2f6c9f0b8d9bd19a069cb571 100644 Binary files a/libcolisao.a and b/libcolisao.a differ diff --git a/libgrafico.a b/libgrafico.a index 5ba9199c4b9057cd13d94efd0dc4f5dc62bf4abc..a0b0e640de6c3c4a2f6c9f0b8d9bd19a069cb571 100644 Binary files a/libgrafico.a and b/libgrafico.a differ diff --git a/libia.a b/libia.a index 5ba9199c4b9057cd13d94efd0dc4f5dc62bf4abc..a0b0e640de6c3c4a2f6c9f0b8d9bd19a069cb571 100644 Binary files a/libia.a and b/libia.a differ diff --git a/libimprime.a b/libimprime.a index 5ba9199c4b9057cd13d94efd0dc4f5dc62bf4abc..a0b0e640de6c3c4a2f6c9f0b8d9bd19a069cb571 100644 Binary files a/libimprime.a and b/libimprime.a differ diff --git a/libkeys.a b/libkeys.a index 5ba9199c4b9057cd13d94efd0dc4f5dc62bf4abc..a0b0e640de6c3c4a2f6c9f0b8d9bd19a069cb571 100644 Binary files a/libkeys.a and b/libkeys.a differ diff --git a/libmagia.a b/libmagia.a index 5ba9199c4b9057cd13d94efd0dc4f5dc62bf4abc..a0b0e640de6c3c4a2f6c9f0b8d9bd19a069cb571 100644 Binary files a/libmagia.a and b/libmagia.a differ diff --git a/libmap.a b/libmap.a index 5ba9199c4b9057cd13d94efd0dc4f5dc62bf4abc..a0b0e640de6c3c4a2f6c9f0b8d9bd19a069cb571 100644 Binary files a/libmap.a and b/libmap.a differ diff --git a/neon.c b/neon.c index cc577908ef373d9a5faa596124d03955def7c7a5..75498915eb4fd1c7d485454d77551a7b123d1e7a 100644 --- a/neon.c +++ b/neon.c @@ -11,14 +11,14 @@ int main() { /* Coisas relacionadas aos chars */ - int cont=0,i,j,x,y; + int i,j,x,y; /* Coisas relacioinadas ao mapa */ int mapsize,xtile[TAM],ytile[TAM],xcorte[TAM],ycorte[TAM]; /* Coisas relacionadas aos neons */ //int xneon[NJOGADORES],yneon[NJOGADORES],direcao=0,cor[4]={1,2,3,4}; - int direcao=0,cor[4]={1,2,3,4}; + int direcao = 0; /* Coisas relacionadas as tecnicas/magias */ - int tlep[4]={0,0,0,0},explox[4][2],exploy[4][2]; + int explox[4][2],exploy[4][2]; /* Pessoas, que contem quase todos os dados (ver colisao.h) */ Pessoa *p; @@ -36,7 +36,6 @@ int main() Window win; FILE *mapa,*errext; // errext = error exit (ou saida de erros) - bool sair = false,redraw = false,puxa[4]={false,false,false,false},temneon[4]={true,true,true,true}; /* Magias */ Magia fireball[4][2]; @@ -44,7 +43,6 @@ int main() //ALLEGRO_FONT *font; //font5 = al_load_font("Fonts/fixed_font.tga", 0, 0); //ALLEGRO_BITMAP *tiles,*chars,*map,*frente,**neons,**fireballs,*explosion; - ALLEGRO_BITMAP *map,*frente,**neons,**fireballs,*explosion; Sprite s; /* Inicializacao dos arquivos. */ @@ -62,11 +60,11 @@ int main() // fprintf(errext,"Falha ao abrir a imagem tiles.");fclose(errext);exit(1); } /* Inicializacao dos Bitmaps */ - neons = (ALLEGRO_BITMAP**) malloc(4*sizeof(ALLEGRO_BITMAP*)); - fireballs = (ALLEGRO_BITMAP**) malloc(4*sizeof(ALLEGRO_BITMAP*)); + s.neons = (ALLEGRO_BITMAP**) malloc(4*sizeof(ALLEGRO_BITMAP*)); + s.fireballs = (ALLEGRO_BITMAP**) malloc(4*sizeof(ALLEGRO_BITMAP*)); s.chars = al_load_bitmap("Imgs/chars.bmp"); // Obs: Cada imagem de cada char eh 32x32 - if(!s.chars) { + if(!(s.chars)) { fprintf(errext,"Falha ao abrir a imagem chars."); fclose(errext); exit(1); @@ -79,65 +77,65 @@ int main() exit(1); } - explosion = al_load_bitmap("Imgs/Explo.bmp"); - if(!explosion) { + s.explosion = al_load_bitmap("Imgs/Explo.bmp"); + if(!(s.explosion)) { fprintf(errext,"Falha ao abrir a imagem explo."); fclose(errext); exit(1); } - neons[0] = al_load_bitmap("Imgs/neonamarelo.bmp"); - if(!neons[0]) { - fprintf(errext,"Falha ao abrir a imagem neons[0]."); + s.neons[0] = al_load_bitmap("Imgs/neonamarelo.bmp"); + if(!s.neons[0]) { + fprintf(errext,"Falha ao abrir a imagem s.neons[0]."); fclose(errext); exit(1); } - neons[1] = al_load_bitmap("Imgs/neonazul.bmp"); - if(!neons[1]) { - fprintf(errext,"Falha ao abrir a imagem neons[1]."); + s.neons[1] = al_load_bitmap("Imgs/neonazul.bmp"); + if(!s.neons[1]) { + fprintf(errext,"Falha ao abrir a imagem s.neons[1]."); fclose(errext); exit(1); } - neons[2] = al_load_bitmap("Imgs/neonverde.bmp"); - if(!neons[2]) { - fprintf(errext,"Falha ao abrir a imagem neons[2]."); + s.neons[2] = al_load_bitmap("Imgs/neonverde.bmp"); + if(!s.neons[2]) { + fprintf(errext,"Falha ao abrir a imagem s.neons[2]."); fclose(errext); exit(1); } - neons[3] = al_load_bitmap("Imgs/neonvermelho.bmp"); - if(!neons[3]) { - fprintf(errext,"Falha ao abrir a imagem neons[3]."); + s.neons[3] = al_load_bitmap("Imgs/neonvermelho.bmp"); + if(!s.neons[3]) { + fprintf(errext,"Falha ao abrir a imagem s.neons[3]."); fclose(errext); exit(1); } - fireballs[0] = al_load_bitmap("Imgs/Fireballc.bmp"); - if(!fireballs[0]) { - fprintf(errext,"Falha ao abrir a imagem fireballs[0]."); + s.fireballs[0] = al_load_bitmap("Imgs/Fireballc.bmp"); + if(!s.fireballs[0]) { + fprintf(errext,"Falha ao abrir a imagem s.fireballs[0]."); fclose(errext); exit(1); } - fireballs[1] = al_load_bitmap("Imgs/Fireballd.bmp"); - if(!fireballs[1]) { - fprintf(errext,"Falha ao abrir a imagem fireballs[1]."); + s.fireballs[1] = al_load_bitmap("Imgs/Fireballd.bmp"); + if(!s.fireballs[1]) { + fprintf(errext,"Falha ao abrir a imagem s.fireballs[1]."); fclose(errext); exit(1); } - fireballs[2] = al_load_bitmap("Imgs/Fireballe.bmp"); - if(!fireballs[2]) { - fprintf(errext,"Falha ao abrir a imagem fireballs[2]."); + s.fireballs[2] = al_load_bitmap("Imgs/Fireballe.bmp"); + if(!s.fireballs[2]) { + fprintf(errext,"Falha ao abrir a imagem s.fireballs[2]."); fclose(errext); exit(1); } - fireballs[3] = al_load_bitmap("Imgs/Fireballb.bmp"); - if(!fireballs[3]) { - fprintf(errext,"Falha ao abrir a imagem fireballs[3]."); + s.fireballs[3] = al_load_bitmap("Imgs/Fireballb.bmp"); + if(!s.fireballs[3]) { + fprintf(errext,"Falha ao abrir a imagem s.fireballs[3]."); fclose(errext); exit(1); } @@ -157,22 +155,14 @@ int main() al_convert_mask_to_alpha(s.tiles,al_map_rgb(255,0,255)); al_convert_mask_to_alpha(s.chars,al_map_rgb(255,0,255)); - al_convert_mask_to_alpha(explosion,al_map_rgb(255,0,255)); + al_convert_mask_to_alpha(s.explosion,al_map_rgb(255,0,255)); for(i=0;i<4;i++) { - al_convert_mask_to_alpha(neons[i],al_map_rgb(255,0,255)); - al_convert_mask_to_alpha(fireballs[i],al_map_rgb(255,0,255)); + al_convert_mask_to_alpha(s.neons[i],al_map_rgb(255,0,255)); + al_convert_mask_to_alpha(s.fireballs[i],al_map_rgb(255,0,255)); } - /* Carrega o mapa */ - - //fscanf(mapa,"%i\n",&mapsize); - //for(int i=0;i<mapsize+1;i++) - // fscanf(mapa,"%i %i %i %i\n",&xtile[i],&ytile[i],&xcorte[i],&ycorte[i]); - al_register_event_source(win.event_queue, al_get_display_event_source(win.display)); - - //matriz = le_matriz(fopen("matriz.txt","r")); - +/* Tentativa de otimizar - se o proximo 'for' nao for equivalente a esse, deu errado! for(i=0; i<4; ++i) { p[i].botao_char[0]=(char*) malloc(30*sizeof(char)); sprintf(p[i].botao_char[0],"%c",98); if(!p[i].botao_char[0]) { @@ -208,6 +198,32 @@ int main() } p[i].time = 1; } +*/ + for(i=0; i<4; ++i) { + for(j=0; j<7; ++j) { + p[i].botao_char[j] = (char*) malloc(30 * sizeof(char)); + if(!(p[i].botao_char[j])) { + fprintf(errext,"Falha ao alocar memoria para p[%d].botao_char[%d]",i,j); + fclose(errext); + exit(1); + } + } + sprintf(p[i].botao_char[0],"%c",98); + sprintf(p[i].botao_char[1],"%c",99); + sprintf(p[i].botao_char[2],"%c",100); + sprintf(p[i].botao_char[3],"%c",101); + sprintf(p[0].botao_char[4],"%c",97); + sprintf(p[0].botao_char[5],"%c",97); + sprintf(p[0].botao_char[6],"%c",97); + p[i].nome = (char*) malloc(30*sizeof(char)); + if(!p[i].nome) { + fprintf(errext,"Falha ao alocar memoria para p[%d].nome",i); + fclose(errext); + exit(1); + } + sprintf(p[i].nome,"player %d",i+1); + p[i].time = 1; + } //teclas_iniciais(); @@ -228,11 +244,9 @@ int main() fclose(cmd); fclose(errext); - puts("Inicializacoes completas!"); - /* Opera o jogo */ if(abremenu(win,p,s)==1) { - fase1(win,sair,puxa,tlep,fireball,redraw,map,cont,i,j,temneon,neons,cor,frente,font5,fireballs,explox,exploy,explosion,p,s); + fase1(win,fireball,font5,explox,exploy,p,s); } graphdeinit(win); exit(1);