Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/11/2015, 11:39
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 11 años, 3 meses
Puntos: 38
Respuesta: Generar animaciones en c++ allegro

Bueno amigo... Se trata de un juego. Ponga el proyecto, o al menos diga la versión de Allegro, y las imágenes suba a un server para que podamos hacer algunas pruebas.
Ademas deberías poner el Highlight en el código que se agradece, pues se ve mejor.

Lo del Highlight te lo dejo yo, pero la próxima elija Highlight e escoja C++.
Código C++:
Ver original
  1. ////////////////////////////////////////////////////////////////////////////////////////////////////////
  2.  
  3. *****************Esta funcion dibuja mi char**************************
  4.  
  5. void dibujar_soldado ( int coordenadaX, int coordenadaY, int dirX, int estatico ) {
  6.     if ( estatico == 1 && dirX == 0 ) {
  7.         clear ( BufferSoldado );
  8.         blit ( SoldadoEDS, BufferSoldado, 0, 0, 0, 0, 128, 128 );
  9.        
  10.         //Con esta funcion dibujamos nuestra imagen sobre el buffer, las primeras dos coordenadas definen el punto inicial des de donde cojeremos la imagen por tanto si tenemos dos fotos en una cons dos solados la 00 me cojera la primera foto i la 64 0 me cojera la segunda foto dentro de mi buffer de 64x64
  11.        
  12.         rectfill ( SoldadoIS1, 128, 128, 200, 200, makecol ( 255, 255, 255 ) );
  13.        
  14.         // Esta funcion se encarga de evitar que se imprima el fondo blanco del soldado, le estoy diciendo que me remueva el color 255,0,255 que es un fonfo lila 100% rojo i 100% azul
  15.        
  16.         draw_sprite ( buffer, BufferSoldado, coordenadaX, coordenadaY );
  17.        
  18.         //con esta funcion respetamos la transparencia para imprimir el buffer sobre el buffersoldado y que no se vea el cuadro blanco
  19.        
  20.         clear ( BufferSoldado );
  21.        
  22.         blit ( SoldadoEDS2, BufferSoldado, 0, 0, 0, 0, 128, 128 );
  23.         rectfill ( SoldadoIS2, 128, 128, 200, 200, makecol ( 255, 255, 255 ) );
  24.         draw_sprite ( buffer, BufferSoldado, coordenadaX, coordenadaY );
  25.        
  26.     } else {
  27.         if ( estatico == 1 && dirX == 1 ) {
  28.             clear ( BufferSoldado );
  29.             blit ( SoldadoEIS, BufferSoldado, 0, 0, 0, 0, 128, 128 );
  30.            
  31.            
  32.            
  33.             rectfill ( SoldadoEIS, 128, 128, 200, 200, makecol ( 255, 255, 255 ) ); /
  34.             draw_sprite ( buffer, BufferSoldado, coordenadaX, coordenadaY );
  35.             clear ( BufferSoldado );
  36.             blit ( SoldadoEIS2, BufferSoldado, 0, 0, 0, 0, 128, 128 );
  37.             rectfill ( SoldadoEIS2, 128, 128, 200, 200, makecol ( 255, 255, 255 ) );
  38.             draw_sprite ( buffer, BufferSoldado, coordenadaX, coordenadaY );
  39.            
  40.         }
  41.     }
  42.    
  43.     if ( dirX == 0 ) {
  44.         clear ( BufferSoldado );
  45.         blit ( SoldadoDS1, BufferSoldado, 0, 0, 0, 0, 128, 128 );
  46.         rectfill ( SoldadoDS1, 128, 128, 200, 200, makecol ( 255, 255, 255 ) );
  47.         draw_sprite ( buffer, BufferSoldado, coordenadaX, coordenadaY );
  48.        
  49.        
  50.         clear ( BufferSoldado );
  51.         blit ( SoldadoDS2, BufferSoldado, 0, 0, 0, 0, 128, 128 );
  52.         rectfill ( SoldadoDS2, 128, 128, 200, 200, makecol ( 255, 255, 255 ) );
  53.         draw_sprite ( buffer, BufferSoldado, coordenadaX, coordenadaY );
  54.        
  55.        
  56.     } else {
  57.         if ( dirX == 1 ) {
  58.             clear ( BufferSoldado );
  59.             blit ( SoldadoIS1, BufferSoldado, 0, 0, 0, 0, 128, 128 );
  60.             rectfill ( SoldadoIS1, 128, 128, 200, 200, makecol ( 255, 255, 255 ) );
  61.             draw_sprite ( buffer, BufferSoldado, coordenadaX, coordenadaY );
  62.             clear ( BufferSoldado );
  63.             blit ( SoldadoIS2, BufferSoldado, 0, 0, 0, 0, 128, 128 );
  64.             rectfill ( SoldadoIS2, 128, 128, 200, 200, makecol ( 255, 255, 255 ) );
  65.             draw_sprite ( buffer, BufferSoldado, coordenadaX, coordenadaY );
  66.            
  67.            
  68.         }
  69.     }
  70.    
  71.     ////////////////////////////////////////////////////////////////////////////////////////////////////////
  72.    
  73.     ***************En esta funcion ejecuto el juego i el movimiento del char******
  74.    
  75.     int coordenadaX = 352;
  76.     int coordenadaY = 320;//En estas dos variables declaramos la posicion del soldado, de momento lo hemos inicializado en medio del mapa, luego se ira modificacndo su posicion en funcion de las teclas de direccion que pulsemos. Para determinar el punto exacto debemos dividir el tamaño total del mapa entre dos y luego restarle 32, para asignarle al buffer el inicio desde su punto 0,0, si no, la imagen sale desplazada
  77.    
  78.     /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  79.     int dirX = 2; //variable para saber si se mueve hacia la derecha o hacia la izquierda, es basicamente para imprimir bien la imagen
  80.     int dirY = 0;
  81.    
  82.     ///////////////////////////////FUNCIONAMIENTO DE EL JUEGO///////////////////////////////////////////////////////////////////////
  83.     while ( !key[KEY_ESC] ) {
  84.    
  85.         int estatico = 1;
  86.        
  87.         ///////////////////////////////MODIFICAMOS DIRECCION EN FUNCION DE LA TECLA, LA DIRECCION I SUS COORDENADAS/////////////////////////////////////////////////////////////////
  88.         if ( key[KEY_RIGHT] ) {
  89.             estatico = 0;
  90.             dirX = 0;
  91.             coordenadaX = coordenadaX + 32;//modificando estos +32 puedo determinar el avanze del soldado y esto le afectara como realentizacions o como turbo
  92.            
  93.         } else {
  94.             if ( key[KEY_LEFT] ) {
  95.                 estatico = 0;
  96.                 dirX = 1;
  97.                 coordenadaX = coordenadaX - 32;
  98.                
  99.             } else {
  100.                 if ( key[KEY_UP] ) {
  101.                
  102.                     dirY = 2;
  103.                     coordenadaY = coordenadaY - 32;
  104.                    
  105.                 } else {
  106.                     if ( key[KEY_DOWN] ) {
  107.                    
  108.                         dirY = 3;
  109.                         coordenadaY = coordenadaY + 32;
  110.                        
  111.                     }
  112.                 }
  113.             }
  114.         }
  115.        
  116.         clear ( buffer );
  117.         clear ( BufferSoldado );
  118.         rest ( 150 );
  119.         dibujar_mapa();
  120.         dibujar_soldado ( coordenadaX, coordenadaY, dirX, estatico );
  121.         imprimir_pantalla();
  122.        
  123.        
  124.         //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  125.        
  126.         //////////////////////////////////////////////////////////////////////////////////////
  127.        
  128.        
  129.        
  130.     }
  131.    
  132. }
  133.  
  134. END_OF_MAIN();

Suba las imágenes o el proyecto entero a un servidor y ponga aquí. Siendo así conseguirás más ayuda.