Sidus(e)k idatzi du:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1Hola:
Nuevamente recurro a ustedes porque tengo un problema que me esta volviendo
loco. Estoy seguro que este problema no es de Allegro sino de Programación en
general (soy nuevo en las dos cosas)
Les cuento:
1) Intente hacerlo por mi mismo, pero la mayoria de los ejemplos que vienen
con Allegro no los entiendo (demasiado complicados para mi).
2) Lo pregunte en una lista de correo de programación en general (ni siquiera
me saludaron) ¿tan horrible es el código que hice?
3) Lo pregunte en otra lista de programación de juegos en general (me tiraron
una idea)
4) Por lo que ahora me veo obligado a preguntar en esta lista.Bueno, el problema es que tengo dos funciones; una carga la imagen y el
movimiento de una nave; la otra carga la imagen y el movimiento del enemigo.
En el código que adjunto solo funciona la primer función que invoco.
Supongo que para que esto funcione el blit se tendría que ejecutar en main.
Pero no tengo idea de como retornar el "draw" que esta en cada
una de las funciones. O tal vez no sea nada de eso.
El programa original esta hecho sin funciones (y funciona), pero cuando algún
día se me antoje modificarlo o agregarle cosas me voy a volver loco.
Es por eso que lo quiero hacer con funciones.Desde ya muchísimas gracias a todos.
#include "allegro.h"
int main(int argc, char *argv[]) {
PALETTE pal;
BITMAP *buffer, *imagen_enemigo, *imagen_nave;allegro_init();
install_keyboard();
set_color_depth(8); // FIJO EL MODO A 256 COLORESif (set_gfx_mode(GFX_AUTODETECT, 1024, 768, 0, 0) != 0) {
allegro_message("Error setting graphics mode\n%s\n", allegro_error);
return 1;
}imagen_enemigo = load_bitmap("imagen_enemigo.pcx", pal);
imagen_nave = load_bitmap("imagen_nave.pcx", pal);set_palette(pal); //ESTABLEZCO UNA UNICA PALETA PARA TODOS LOS GRAFICOS
buffer = create_bitmap (SCREEN_W, SCREEN_H);
/*-------------------------------------------------------------------------
// CADA UNA DE ESTAS FUNCIONES TRABAJA BIEN EN FORMA SEPARADA
// PERO SOLO FUNCIONA LA QUE INVOCO PRIMERO
// EN ESTE CASO NO ME CARGA LA NAVE
//-----------------------------------------------------------------------*/CARGAR_Y_MOVER_ENEMIGO (buffer, imagen_enemigo); //ESTA FUNCIONA BIEN
MOVETE_NAVE (buffer, imagen_nave); //NO CARGA LA IMAGEN DE LA NAVEreadkey();
return 0;
}
END_OF_MAIN();CARGAR_Y_MOVER_ENEMIGO (BITMAP *buffer, BITMAP *imagen_enemigo) {
int y_enemigo = 10;
int x_enemigo = 500;
while (!key[KEY_ESC]) {if (x_enemigo > 20) { //REBOTA EL ENEMIGO HACIA LA IZQUIERDA
x_enemigo = x_enemigo - 20;draw_sprite (buffer, imagen_enemigo, x_enemigo, y_enemigo);
blit(buffer,screen,0,0,0,0,SCREEN_W,SCREEN_H);
clear(buffer); //LIMPIO EL BUFFER
}
if (x_enemigo == 20) { //REBOTA ENEMIGO HACIA LA DERECHA
while (x_enemigo < 915) {
x_enemigo = x_enemigo + 20;
draw_sprite (buffer, imagen_enemigo,
x_enemigo, y_enemigo);
blit(buffer,screen,0,0,0,0,SCREEN_W,SCREEN_H);
clear(buffer); //LIMPIO EL BUFFER
}
}
}
return 0;
}MOVETE_NAVE (BITMAP *buffer, BITMAP *imagen_nave) {
int y_nave = 650;
int x_nave = 500;while (!key[KEY_ESC]) {
if (key[KEY_LEFT] && x_nave > 20) x_nave=x_nave-20; //a la izquierda
if (key[KEY_RIGHT] && (x_nave < 915)) x_nave=x_nave+20; // a la derecha
draw_sprite (buffer, imagen_nave, x_nave, y_nave);
blit(buffer,screen,0,0,0,0,SCREEN_W,SCREEN_H);
clear(buffer); //LIMPIO EL BUFFER
}
return 0;
}- --
Llave Gnupg en:
http://pgp.rediris.es:11371/pks/lookup?op=get&search=0x6F1FD83EKey fingerprint = F619 9CB9 8E42 0287 8386 D2ED AEBA 0FC5 6F1F D83E
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.orgiEYEARECAAYFAj1+EVAACgkQrroPxW8f2D58LQCfSTXT5SAzu6y9rlBXvzHqTVTw
ZCkAoKAvEcvZqlKlMw0cMuhk/UrzSEsH
=CmkH
-----END PGP SIGNATURE-----_______________________________________________
Para cancelar su subscripción envíe un email a:
allegro-espanol-unsubscribe@egroups.com
La utilización de Yahoo! Grupos está sujeta a su aceptación de las
Condiciones del servicio (http://es.docs.yahoo.com/info/utos.html) así
como de la Política de privacidad (http://privacy.yahoo.com/es/).