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 buscar mensajes antiguos en un grupo.

Mensajes

  Mensajes Ayuda
Avanzado
Funciones   Lista de mensajes  
Responder | Reenviar Mensaje #761 de 9896 |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hola:
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 COLORES

if (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 NAVE

readkey();

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=0x6F1FD83E

Key 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.org

iEYEARECAAYFAj1+EVAACgkQrroPxW8f2D58LQCfSTXT5SAzu6y9rlBXvzHqTVTw
ZCkAoKAvEcvZqlKlMw0cMuhk/UrzSEsH
=CmkH
-----END PGP SIGNATURE-----



Mar, 10 de Sep, 2002 3:35 pm

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

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

... Hash: SHA1 Hola: Nuevamente recurro a ustedes porque tengo un problema que me esta volviendo loco. Estoy seguro que este problema no es de Allegro sino de...
Sidus
fallosbsas
Sin conexión Enviar mensaje
22 de Sep, 2002
5:48 pm
Avanzado

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