Programación Específica > Allegro
Problema Con Allegro Y Dev-cpp
palpatine16:
tengo otro problema. Al intentar crear un universo donuts (que la nave cuando sale por un lado de la pantalla aparezca por el otro) solo me funciona hacia la derecha y hacia abajo. hacia la izquierda y arrbia no va, porque???
el codigo completo seria:
--- Código: Text --- #include <allegro.h> BITMAP*buf;BITMAP*fondo;BITMAP*nave; int x,y; void init(){ allegro_init(); set_color_depth(24); set_window_title("Star Wars Invaders v. 1.0"); set_gfx_mode(GFX_AUTODETECT_WINDOWED,320,240,0,0); install_timer(); install_keyboard(); } void juego(){ x=140; y=195; buf=create_bitmap(320,240); fondo=load_bmp("fondo.bmp",0); nave=load_bmp("nave.bmp",0); while(!key[KEY_ESC]){ //movimiento de la nave if(key[KEY_LEFT]){ x=x-4; } if(key[KEY_RIGHT]){ x=x+4; } if(key[KEY_UP]){ y=y-4; } if(key[KEY_DOWN]){ y=y+4; } //Universo donuts if(x<=0){ x=315; } if(x>=315){ x=0; } if(y<=0){ y=235; } if(y>=235){ y=0; } blit(buf, screen,0,0,0,0,320,240); clear(buf); draw_sprite(buf, fondo,0,0); draw_sprite(buf, nave, x,y); } } void intro(){ textout_ex(screen, font, "Star Wars invaders", 50, 120, makecol(255, 255, 255), -1); textout_ex(screen, font, "Pulsa Enter para empezar", 50, 140, makecol(255, 255, 255), -1); while(!key[KEY_ESC]){ if(key[KEY_ENTER]){ juego(); } } } int main(){ init(); intro();} END_OF_MAIN()
Gracias
ibito:
--- Cita de: "palpatine16" --- muchas gracias pero aora sale un error aunque no tiene importancia
--- Código: Text --- 56 [Warning] no newline at end of file
q es esto?
porque funcionar si funciona. ya puedo ejecutarlo pero eso puede dar problemas???
--- Fin de la cita ---
después de
--- Código: Text --- END_OF_MAIN() //Necesario despues de un Main en Allegro
Presiona <ENTER> y listo.
Lo del universo donut es un error de lógica, tienes:
--- Código: Text --- //Universo donuts if(x<=0){ x=315; } if(x>=315){ x=0; } if(y<=0){ y=235; } if(y>=235){ y=0; }
entonces, cuando llevas a la 'nave' al borde de la derecha, al ser 'x'=0, pones que 'x'=315, en el siguiente if, tienes que si 'x'=315, iguale 'x' a 0... lo mismo pasa con la 'y'...
palpatine16:
a okis, entonces como podria hacer esto( que la nave salga por un lado y entro por el otro)???, porque no lo consigo
gracias
ibito:
--- Cita de: "ibito" --- entonces, cuando llevas a la 'nave' al borde de la derecha, al ser 'x'=0, pones que 'x'=315, en el siguiente if, tienes que si 'x'=315, iguale 'x' a 0... lo mismo pasa con la 'y'...
--- Fin de la cita ---
Aquí era al borde de la izquierda no derecha :P
No voy a poner código si es lo que quieres, mira, por ejemplo:
los bordes son 0, 0 y 315, 235
lee detenidamente tu código:
--- Código: Text --- //Universo donuts if(x<=0){ x=315; } if(x>=315){ x=0; } if(y<=0){ y=235; } if(y>=235){ y=0; }
si 'x' es menor o igual a 0, igualamos 'x' a 315
si 'x' es mayor o igual a 315, igualamos 'x' a 0
creo que con esas 2 líneas tienes para entender el punto al que me refiero, recuerda que despues de la 1ra linea, pasa a la 2da, es decir, después del primer 'if', pasa al siguiente 'if'.
Navegación
[*] Página Anterior
Ir a la versión completa