Entrar
¿Usuario nuevo? Regístrate
allegro-espanol · Una lista en español sobre la librería Allegro.
? ¿Ya estás suscrito? Entrar en Yahoo!

Consejos de Yahoo! Grupos

¿Sabías que...?
Puedes determinar el orden de los mensajes. Pulsa el enlace en la columna correspondiente a la fecha. Tus preferencias serán guardadas y no tendrás que introducirlas de nuevo.

Mensajes

  Mensajes Ayuda
Avanzado
Problemas con funciones   Lista de mensajes  
Responder | Reenviar Mensaje #785 de 9896 |
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.




Sáb, 4 de Ene, 2003 1:25 pm

fallosbsas
Sin conexión Sin conexión
Enviar mensaje Enviar mensaje

Reenviar Mensaje #785 de 9896 |
Desplegar mensajes Autor Ordenar por fecha

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...
fallosbsas
Sin conexión Enviar mensaje
4 de Ene, 2003
1:25 pm

... Si te refieres a que el disparo sale contínuamente, eso es porque la condición del if es cierta mientras el usario esté pulsando la tecla (a nivel...
Grzegorz Adam Hankiew...
gradha@...
Enviar mensaje
4 de Ene, 2003
2:44 pm

... Va muy rapido el disparo porque hasta que no colisione (la condicion del while) el seguira moviendose pero sin dibujarse en pantalla (solo lo dibujas en el...
todoslosnombresestanc...
todoslosnomb...
Sin conexión Enviar mensaje
5 de Ene, 2003
11:16 am

Muchas gracias a todos. Voy a probar lo que me recomendaron y después les cuento. Un saludo....
fallosbsas
Sin conexión Enviar mensaje
13 de Ene, 2003
2:52 pm
Avanzado

Copyright © 2009 Yahoo! Todos los derechos reservados.
Política de Privacidad Actualizada - Condiciones del servicio - Directrices - Ayuda