Skip to content
Snippets Groups Projects
Commit 238a10d6 authored by Cristian Weiland's avatar Cristian Weiland
Browse files

Add sprite structure and remove tiles and chars


Signed-off-by: default avatarCristian <cw14@inf.ufpr.br>
parent ad5b4698
Branches
Tags
2 merge requests!3Develop,!2Sprites
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,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 *p)
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)
{
char** matriz;
ALLEGRO_BITMAP *tiles;
int mapsize,xtile[TAM],ytile[TAM],xcorte[TAM],ycorte[TAM], njogadores = 4;
FILE *mapa,*errext;
......@@ -19,21 +18,12 @@ void fase1(Window win,bool sair,bool *puxa,int *tlep,Magia fireball[4][2],bool r
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,tiles);
frente = cria_frente(win,mapa,mapsize,xcorte,ycorte,xtile,ytile,tiles); // Obs: Confundi dentro da funao, entao to passando invertido aqui. EH PROPOSITAL!
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 funao, entao to passando invertido aqui. EH PROPOSITAL!
matriz = le_matriz(fopen("Fases/F1/matriz.txt","r"));
......@@ -103,7 +93,7 @@ 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,chars,cor,temneon,njogadores,p);
imprime_4_chars_for(cont,matriz,neons,cor,temneon,njogadores,p,s);
IA(p);
......
No preview for this file type
......@@ -36,6 +36,15 @@ typedef struct Magia {
* 0 = cima; 1 = direita; 2 = esquerda; 3 = baixo; */
} Magia;
typedef struct Sprite {
//*tiles,*chars,*map,*frente,**neons,**fireballs,*explosion;
ALLEGRO_BITMAP *tiles;
//ALLEGRO_BITMAP
//ALLEGRO_BITMAP
//ALLEGRO_BITMAP
//ALLEGRO_BITMAP
ALLEGRO_BITMAP *chars;
} Sprite;
#define CONT 2
#define NEONAMARELO 1
......
......@@ -7,14 +7,14 @@ inline void imprime_neon(int x,int y,ALLEGRO_BITMAP* neon,bool temneon)
return ;
}
inline void imprime_char(int cx,int cy,int a,int b,int selx,int sely,ALLEGRO_BITMAP *chars)
inline void imprime_char(int cx,int cy,int a,int b,int selx,int sely,Sprite s)
{ // cx e cy indicam qual a posicao do char no mapa. A e B indicam qual o "boneco" deve ser imprimido pela funao. Selx e Sely indicam qual
// imagem do "boneco" (ex: mexendo uma perna, ou de costas, etc.)
al_draw_bitmap_region(chars,a+selx,b+sely,32,32,cx,cy,0); // Desenha char 1. | Obs.: Ver 96 como 32x3 e 128 como 32x4.
al_draw_bitmap_region(s.chars,a+selx,b+sely,32,32,cx,cy,0); // Desenha char 1. | Obs.: Ver 96 como 32x3 e 128 como 32x4.
return ;
}
int imprime_4_chars_for(int cont,char** matriz,ALLEGRO_BITMAP** neons,ALLEGRO_BITMAP *chars,int *cor,bool *temneon,int njogadores, Pessoa *p)
int imprime_4_chars_for(int cont,char** matriz,ALLEGRO_BITMAP** neons,int *cor,bool *temneon,int njogadores,Pessoa *p,Sprite s)
{
//puts("Imprimindo chars...");
int i,j,selecx,selecy,char4;
......@@ -65,7 +65,7 @@ int imprime_4_chars_for(int cont,char** matriz,ALLEGRO_BITMAP** neons,ALLEGRO_BI
p[i].y += 4 * p[i].correr;
p[i].sely = 0 + 128*char4;
if(!(p[i].andou_e) && !(p[i].andou_d) && !(p[i].andou_c))
imprime_char(p[i].x,p[i].y,p[i].desx,p[i].desy,p[i].selx,p[i].sely,chars);
imprime_char(p[i].x,p[i].y,p[i].desx,p[i].desy,p[i].selx,p[i].sely,s);
}
//printf("Primeiro if completo! ");
if((p[i].andou_e) == 1) {
......@@ -77,7 +77,7 @@ int imprime_4_chars_for(int cont,char** matriz,ALLEGRO_BITMAP** neons,ALLEGRO_BI
p[i].sely = 32 + 128*char4;
if(!(p[i].andou_d) && !(p[i].andou_c))
//imprime_char(p[i].x,p[i].y,p[i].desx,p[i].desy,desx[i],desy[i],chars);
imprime_char(p[i].x,p[i].y,p[i].desx,p[i].desy,p[i].selx,p[i].sely,chars);
imprime_char(p[i].x,p[i].y,p[i].desx,p[i].desy,p[i].selx,p[i].sely,s);
}
//printf("Segundo if completo! ");
if((p[i].andou_d) == 1) {
......@@ -87,7 +87,7 @@ int imprime_4_chars_for(int cont,char** matriz,ALLEGRO_BITMAP** neons,ALLEGRO_BI
p[i].x += 4 * p[i].correr;
p[i].sely = 64 + 128*char4;
if(!(p[i].andou_c))
imprime_char(p[i].x,p[i].y,p[i].desx,p[i].desy,p[i].selx,p[i].sely,chars);
imprime_char(p[i].x,p[i].y,p[i].desx,p[i].desy,p[i].selx,p[i].sely,s);
}
//printf("Terceiro if completo! ");
if((p[i].andou_c) == 1) {
......@@ -96,7 +96,7 @@ int imprime_4_chars_for(int cont,char** matriz,ALLEGRO_BITMAP** neons,ALLEGRO_BI
}
p[i].y -= 4 * p[i].correr;
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,chars);
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]);
else if((p[i].andou_e) == 1 && (p[i].andou_d)==0)
......@@ -106,7 +106,7 @@ int imprime_4_chars_for(int cont,char** matriz,ALLEGRO_BITMAP** neons,ALLEGRO_BI
}
//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,chars);
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]);
}
}
......
......@@ -21,6 +21,6 @@
//extern Pessoa pessoa[4];
void imprime_char(int cx,int cy,int a,int b,int selx,int sely,ALLEGRO_BITMAP *chars);
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,ALLEGRO_BITMAP *chars,int *cor,bool *temneon,int njogadores, Pessoa *p);
int imprime_4_chars_for(int cont,char** matriz,ALLEGRO_BITMAP** neons,int *cor,bool *temneon,int njogadores,Pessoa *p,Sprite s);
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,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 *p)
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)
{
char** matriz;
ALLEGRO_BITMAP *tiles;
//ALLEGRO_BITMAP *tiles;
int mapsize,xtile[TAM],ytile[TAM],xcorte[TAM],ycorte[TAM], njogadores = 4;
FILE *mapa,*errext;
......@@ -18,22 +18,22 @@ 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));
//al_convert_mask_to_alpha(tiles,al_map_rgb(255,0,255));
map = cria_mapa(win,mapa,mapsize,xtile,ytile,xcorte,ycorte,tiles);
frente = cria_frente(win,mapa,mapsize,xcorte,ycorte,xtile,ytile,tiles); // Obs: Confundi dentro da funao, entao to passando invertido aqui. EH PROPOSITAL!
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 funao, entao to passando invertido aqui. EH PROPOSITAL!
matriz = le_matriz(fopen("Fases/F1/matriz.txt","r"));
......@@ -103,7 +103,7 @@ 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,chars,cor,temneon,njogadores,p);
imprime_4_chars_for(cont,matriz,neons,cor,temneon,njogadores,p,s);
IA(p);
......
......@@ -36,6 +36,15 @@ typedef struct Magia {
* 0 = cima; 1 = direita; 2 = esquerda; 3 = baixo; */
} Magia;
typedef struct Sprite {
//*tiles,*chars,*map,*frente,**neons,**fireballs,*explosion;
ALLEGRO_BITMAP *tiles;
//ALLEGRO_BITMAP
//ALLEGRO_BITMAP
//ALLEGRO_BITMAP
//ALLEGRO_BITMAP
ALLEGRO_BITMAP *chars;
} Sprite;
#define CONT 2
#define NEONAMARELO 1
......
......@@ -21,6 +21,6 @@
//extern Pessoa pessoa[4];
void imprime_char(int cx,int cy,int a,int b,int selx,int sely,ALLEGRO_BITMAP *chars);
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,ALLEGRO_BITMAP *chars,int *cor,bool *temneon,int njogadores, Pessoa *p);
int imprime_4_chars_for(int cont,char** matriz,ALLEGRO_BITMAP** neons,int *cor,bool *temneon,int njogadores,Pessoa *p,Sprite s);
......@@ -4,7 +4,7 @@
#include "grafico.h"
#include "colisao.h"
ALLEGRO_BITMAP* cria_mapa(Window win,FILE* mapa,int mapsize,int xtile[],int ytile[],int xcorte[],int ycorte[],ALLEGRO_BITMAP *tiles);
ALLEGRO_BITMAP* cria_frente(Window win,FILE* mapa,int mapsize,int xtile[],int ytile[],int xcorte[],int ycorte[],ALLEGRO_BITMAP *tiles);
ALLEGRO_BITMAP* cria_mapa(Window win,FILE* mapa,int mapsize,int xtile[],int ytile[],int xcorte[],int ycorte[],Sprite s);
ALLEGRO_BITMAP* cria_frente(Window win,FILE* mapa,int mapsize,int xtile[],int ytile[],int xcorte[],int ycorte[],Sprite s);
#endif
\ No newline at end of file
......@@ -8,4 +8,4 @@
char editor_text(ALLEGRO_EVENT ev);
int botao(char *texto,int x,int y,ALLEGRO_EVENT ev);
void opcoes(Window win, Pessoa *p);
int abremenu(Window win,ALLEGRO_BITMAP *chars, Pessoa *p);
int abremenu(Window win,Pessoa *p,Sprite s);
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,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 *p)
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)
{
char** matriz;
ALLEGRO_BITMAP *tiles;
//ALLEGRO_BITMAP *tiles;
int mapsize,xtile[TAM],ytile[TAM],xcorte[TAM],ycorte[TAM], njogadores = 4;
FILE *mapa,*errext;
......@@ -18,22 +18,22 @@ 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));
//al_convert_mask_to_alpha(tiles,al_map_rgb(255,0,255));
map = cria_mapa(win,mapa,mapsize,xtile,ytile,xcorte,ycorte,tiles);
frente = cria_frente(win,mapa,mapsize,xcorte,ycorte,xtile,ytile,tiles); // Obs: Confundi dentro da funao, entao to passando invertido aqui. EH PROPOSITAL!
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 funao, entao to passando invertido aqui. EH PROPOSITAL!
matriz = le_matriz(fopen("Fases/F1/matriz.txt","r"));
......@@ -103,7 +103,7 @@ 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,chars,cor,temneon,njogadores,p);
imprime_4_chars_for(cont,matriz,neons,cor,temneon,njogadores,p,s);
IA(p);
......
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment