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);