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!!!