Hola:
Les queria hacer dos consultas.
Consulta 1º) Tengo una función para provocar el disparo de una nave:
DISPARO_NAVE() {
int velocidad_disparo = -10;
if (key[KEY_SPACE]) {
do {
draw_sprite (compartidos.buffer, nave.imagen_disparo,
nave.disparo_x, nave.disparo_y);
nave.disparo_y = nave.disparo_y + velocidad_disparo;
} while (nave.disparo_y > compartidos.limite_superior_y);
}
return 0;
}
}
El problema que tengo con esta función es que el disparo sale
demasiado rápido, y no
puedo solucionarlo disminuyendo el valor de la
variable "velocidad_disparo".
Consulta 2º) La función DISPARO_NAVE interfiere con la función
MOVER_ENEMIGO.
Es decir, disminuye el rango de rebote. Por ej.: si el enemigo se
desplaza de un lado al otro
de la pantalla (a), al usar la función DISPARO_NAVE, el enemigo se
desplaza hasta que "choca" con el
camino de DISPARO_NAVE, aunque el gráfico del disparo no se haya
dibujado (b).
a)
|------------------------|
| Rebote del enemigo |
|<---------------------->| Pantalla
| |
|________________________|
b)
|-------------------------|
| ^ |
|Rebote del | |
|enemigo | |
|<---------> | Camino | Pantalla
| | del |
| | disparo |
| |
|_________________________|
MOVER_ENEMIGO () {
int movimiento;
if (enemigo.x_enemigo < compartidos.limite_min_x) {
movimiento = 20;
}
if (enemigo.x_enemigo > compartidos.limite_max_x) {
movimiento = -20;
}
enemigo.x_enemigo = enemigo.x_enemigo + movimiento;
draw_sprite (compartidos.buffer, enemigo.imagen_enemigo,
enemigo.x_enemigo, enemigo.y_enemigo);
return 0;
}
Y por último, para intentar aclarar un poco más las cosas, todos los
gráficos se dibujan
con esta función:
DIBUJAR_TODO () {
blit(compartidos.buffer,screen,0,0,0,0,SCREEN_W,SCREEN_H);
clear (compartidos.buffer);
return 0;
}
Desde ya muchas gracias.
PD: gracias al consejo que me dieron (usar estructuras), pude avanzar
un poco más.
Ahora estoy trabado con esto hace más de dos semanas.
Un saludo.