struct enemigo
{
int x; // Posicion horizontal
int y; // Posicion vertical
int ancho; // Ancho en pixeles
int incrX; // Incremento horiz (velocidad)
int tipo; // Tipo de enemigo: Pepino, narizotas, etc
bool activo; // Vivo o muerto?
};
Y el array guardará esos datos para una serie de enemigos:
const int NUMENEMIGOS = 5;
enemigo enemigos[NUMENEMIGOS];
Antes preparábamos una serie de datos iniciales para un único enemigo:
// Posicion inicial y tamaño del enemigo
int xEnemigo1=250, yEnemigo1=250;
int anchoEnemigo1=40;
int incrEnemigo=3;
Ahora tendremos que preparar datos iniciales para varios enemigos, así que lo podemos hacer de forma repetitiva, con un "for":
// Posicion inicial y tamaño de los enemigos
enemigo enemigos[NUMENEMIGOS];
for (i=0; i<NUMENEMIGOS; i++)
{
enemigos[i].x = 250 + i*40;
enemigos[i].y = 250 + i*30;
enemigos[i].ancho = 40;
enemigos[i].incrX = 3;
if (i<3)
enemigos[i].tipo = TIPOENEMIGOPEPINO;
else
enemigos[i].tipo = TIPOENEMIGONARIZ;
enemigos[i].activo = true;
}
De igual modo, antes dibujábamos un único enemigo:
SDLA_dibujarImagenOculta(enemigo1, xEnemigo1, yEnemigo1);
y ahora dibujaremos varios, que además pueden ser de distintos tipos, y estar activos ("vivos") o no ("muertos"):
for (i=0; i<NUMENEMIGOS; i++)
{
if (enemigos[i].activo)
{
if (enemigos[i].tipo == TIPOENEMIGOPEPINO)
enemigo = enemigoPepino;
else
enemigo = enemigoNariz;
SDLA_dibujarImagenOculta(enemigo, enemigos[i].x,enemigos[i].y);
}
}
Y tras cada fotograma deberemos mover los enemigos, cada uno de ellos con su propia posición y velocidad (incremento de posición). Antes era así
// Movimiento de enemigo (de momento: lado a lado)
xEnemigo1 += incrEnemigo;
if (xEnemigo1 < xIniPantalla) {
xEnemigo1 = xIniPantalla;
incrEnemigo = -incrEnemigo;
}
if (xEnemigo1 > xFinPantalla-anchoEnemigo1) {
xEnemigo1 = xFinPantalla-anchoEnemigo1;
incrEnemigo = -incrEnemigo;
}
Y ahora será parecido, pero repetitivo y accediendo a los campos de cada "struct", así:
// Movimiento de enemigos (de momento: lado a lado)
for (i=0; i<NUMENEMIGOS; i++)
{
enemigos[i].x += enemigos[i].incrX;
if (enemigos[i].x < xIniPantalla) {
enemigos[i].x = xIniPantalla;
enemigos[i].incrX = -enemigos[i].incrX;
}
if (enemigos[i].x > xFinPantalla-enemigos[i].ancho) {
enemigos[i].x = xFinPantalla-enemigos[i].ancho;
enemigos[i].incrX = -enemigos[i].incrX;
}
}
Como siempre, el resto del proyecto está en: code.google.com/p/fruityfrank
No hay comentarios:
Publicar un comentario