Pongo el codigo de la parte q tengo echa.
- Código: Seleccionar todo
- #include "RutinesINVADERS_v1.h"
 /*En aquesta primera part inicialitzem els registres, ja que tenim guardades les constatns al RutinesINVADERS_v1.h*/
 typedef struct
 {
 int x;
 int y;
 int matriu [MidaPers] [MidaPers];
 int actiu;
 }tipus_alien;
 typedef struct
 {
 int x;
 int y;
 int matriu [MidaPers] [MidaPers];
 int actiu;
 }tipus_cano;
 typedef struct
 {
 int x;
 int y;
 int actiu;
 }tipus_missil;
 /*Assignem nom a les varibles*/
 void main()
 {
 tipus_alien alien;
 tipus_cano cano;
 tipus_missil missil;
 int taula_bloc_aliens [tamany_aliens_alt] [tamany_aliens_ample];
 char tecla, continuar;
 int i, j, k, l, dir_alien, x_missil_alien, contador_aliens, xoc_alien_cano, sortir, xbloc, ybloc;
 int Pantalla [AlssadaTaulell] [AmpladaTaulell];
 int num, vides, punts;
 char jugador[20];
 printf("Escriu el teu nom\n");
 gets(jugador);
 CreaTaulell();
 /*En aquesta part abans de la inicialitzacio del joc donem forma als aliens i al cano*/
 for (i=0; i < tamany_aliens_alt; i++)
 for (j=0; j < tamany_aliens_ample; j++)
 taula_bloc_aliens [i] [j] = 1;
 
 for (i=0; i<MidaPers; i++)
 for (j=0; j<MidaPers; j++)
 {
 alien.matriu[i][j] = 4;
 alien.matriu[1][1] = 0;
 alien.matriu[2][1] = 0;
 }
 
 for (i=0; i<MidaPers; i++)
 for (j=0; j<MidaPers; j++)
 {
 cano.matriu[i][j] = 4;
 cano.matriu[0][0] = 0;
 cano.matriu[0][2] = 0;
 }
 for (i=0; i < AlssadaTaulell; i++)
 for (j=0; j < AmpladaTaulell; j++)
 Pantalla[i] [j] = 0;
 /*Inicialitzem el joc, posem les posicions dels objectes que hi seran en pantalla i els pintem en aquesta*/
 do
 {
 cano.x = AmpladaTaulell / 2;
 cano.y = AlssadaTaulell - 3;
 cano.actiu = 1;
 xbloc = 0;
 ybloc =0;
 dir_alien = 1;
 PosaPersonatge(cano.matriu,Pantalla,cano.x,cano.y);
 PosaPersonatge2(taula_bloc_aliens, Pantalla, xbloc, ybloc);
 
 missil.x = cano.x;
 missil.y = cano.y;
 missil.actiu = 0;
 
 vides = 3;
 punts = 0;
 contador_aliens = 0;
 MostraJugador(jugador);
 MostraPunts(punts);
 MostraVides(vides);
 
 /*Bucle principal que es repetira sempre que no es cumpleixin unes de les condicions de sortida*/
 
 do
 {
 MostraPantalla(Pantalla);
 while (kbhit())
 {
 tecla = getch();
 {
 if (tecla = -32)
 {
 tecla = getch();
 switch (tecla)
 {
 case KEY_UP:
 if (missil.actiu == 0)
 {
 missil.actiu = 1;
 missil.x = cano.x;
 missil.y = AlssadaTaulell-5;
 PosaTretCano(Pantalla,missil.x,missil.y);
 }
 break;
 case KEY_LEFT:
 if (cano.x > 1)
 {
 BorraPersonatge(cano.matriu, Pantalla, cano.x, cano.y);
 cano.x = cano.x -1;
 PosaPersonatge(cano.matriu,Pantalla,cano.x,cano.y);
 }
 break;
 case KEY_RIGHT:
 if (cano.x < AmpladaTaulell-4)
 {
 BorraPersonatge(cano.matriu, Pantalla, cano.x, cano.y);
 cano.x = cano.x + 1;
 PosaPersonatge(cano.matriu,Pantalla,cano.x,cano.y);
 }
 break;
 default:
 break;
 }
 }
 if (tecla == KEY_ESC)
 sortir = 1;
 }
 }
 if (sortir != 1)
 {
 if (((xbloc == 0) & (dir_alien == -1)) || (((xbloc + tamany_aliens_ample) == AmpladaTaulell-1)& (dir_alien ==1)))
 {
 BorraPersonatge2(taula_bloc_aliens,Pantalla,xbloc,ybloc);
 ybloc = ybloc +1;
 dir_alien = dir_alien * (-1);
 PosaPersonatge2(taula_bloc_aliens, Pantalla, xbloc, ybloc);
 if (ybloc == AlssadaTaulell -3)
 xoc_alien_cano =1;
 }
 else
 {
 BorraPersonatge2(taula_bloc_aliens,Pantalla,xbloc,ybloc);
 (xbloc = xbloc + dir_alien);
 PosaPersonatge2(taula_bloc_aliens, Pantalla, xbloc, ybloc);
 }
 }
 if (missil.actiu == 1)
 {
 if (missil.y == 0)
 {
 missil.actiu = 0;
 BorraTret(Pantalla, missil.x, missil.y);
 }
 else
 {
 BorraTret(Pantalla, missil.x, missil.y);
 missil.y = missil.y -1;
 PosaTretCano(Pantalla, missil.x, missil.y);
 }
 }
 
 }while ((tecla != KEY_ESC) || ((ybloc + tamany_aliens_alt) == AlssadaTaulell -3));
 {
 BorraTret(Pantalla, missil.x, missil.y);
 BorraPersonatge2(taula_bloc_aliens, Pantalla, xbloc, ybloc);
 BorraPersonatge(cano.matriu, Pantalla, cano.x, cano.y);
 printf("Vols tornar a jugar? y/n");
 continuar = getch();
 }
 }while ((continuar =='y') || (continuar =='Y'));
La libreria rutinesInvaders, son constantes. Y la parte de funciones me la he saltado q ocupaba un cachillo.
Funciones solo tengo MostrarPers, Borrar, Tret y esas.
PD: Tb nose porque cuando reinicio la partida se me vuevle a la primera posicion pero luego se cierra.
Mersi!!!

