Programación Específica > Allegro

 Problema Con Allegro Y Dev-cpp

<< < (3/3)

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 &#60;allegro.h&#62; BITMAP*buf;BITMAP*fondo;BITMAP*nave; int x,y; void init(){     allegro_init();     set_color_depth(24);     set_window_title(&#34;Star Wars Invaders v. 1.0&#34;);     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(&#34;fondo.bmp&#34;,0);     nave=load_bmp(&#34;nave.bmp&#34;,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&#60;=0){                                   x=315;                                   }                          if(x&#62;=315){                                     x=0;                                     }                          if(y&#60;=0){                                   y=235;                                   }                          if(y&#62;=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, &#34;Star Wars invaders&#34;, 50, 120, makecol(255, 255, 255), -1);     textout_ex(screen, font, &#34;Pulsa Enter para empezar&#34;, 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&#60;=0){                                  x=315;                                  }                         if(x&#62;=315){                                    x=0;                                    }                         if(y&#60;=0){                                  y=235;                                  }                         if(y&#62;=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&#60;=0){                                 x=315;                                 }                        if(x&#62;=315){                                   x=0;                                   }                        if(y&#60;=0){                                 y=235;                                 }                        if(y&#62;=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

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa