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//////////////////////////////////////////////////////////////////////////////////////////////////////// *****************Esta funcion dibuja mi char************************** void dibujar_soldado ( int coordenadaX, int coordenadaY, int dirX, int estatico ) { if ( estatico == 1 && dirX == 0 ) { clear ( BufferSoldado ); blit ( SoldadoEDS, BufferSoldado, 0, 0, 0, 0, 128, 128 ); //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 rectfill ( SoldadoIS1, 128, 128, 200, 200, makecol ( 255, 255, 255 ) ); // 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 draw_sprite ( buffer, BufferSoldado, coordenadaX, coordenadaY ); //con esta funcion respetamos la transparencia para imprimir el buffer sobre el buffersoldado y que no se vea el cuadro blanco clear ( BufferSoldado ); blit ( SoldadoEDS2, BufferSoldado, 0, 0, 0, 0, 128, 128 ); rectfill ( SoldadoIS2, 128, 128, 200, 200, makecol ( 255, 255, 255 ) ); draw_sprite ( buffer, BufferSoldado, coordenadaX, coordenadaY ); } else { if ( estatico == 1 && dirX == 1 ) { clear ( BufferSoldado ); blit ( SoldadoEIS, BufferSoldado, 0, 0, 0, 0, 128, 128 ); rectfill ( SoldadoEIS, 128, 128, 200, 200, makecol ( 255, 255, 255 ) ); / draw_sprite ( buffer, BufferSoldado, coordenadaX, coordenadaY ); clear ( BufferSoldado ); blit ( SoldadoEIS2, BufferSoldado, 0, 0, 0, 0, 128, 128 ); rectfill ( SoldadoEIS2, 128, 128, 200, 200, makecol ( 255, 255, 255 ) ); draw_sprite ( buffer, BufferSoldado, coordenadaX, coordenadaY ); } } if ( dirX == 0 ) { clear ( BufferSoldado ); blit ( SoldadoDS1, BufferSoldado, 0, 0, 0, 0, 128, 128 ); rectfill ( SoldadoDS1, 128, 128, 200, 200, makecol ( 255, 255, 255 ) ); draw_sprite ( buffer, BufferSoldado, coordenadaX, coordenadaY ); clear ( BufferSoldado ); blit ( SoldadoDS2, BufferSoldado, 0, 0, 0, 0, 128, 128 ); rectfill ( SoldadoDS2, 128, 128, 200, 200, makecol ( 255, 255, 255 ) ); draw_sprite ( buffer, BufferSoldado, coordenadaX, coordenadaY ); } else { if ( dirX == 1 ) { clear ( BufferSoldado ); blit ( SoldadoIS1, BufferSoldado, 0, 0, 0, 0, 128, 128 ); rectfill ( SoldadoIS1, 128, 128, 200, 200, makecol ( 255, 255, 255 ) ); draw_sprite ( buffer, BufferSoldado, coordenadaX, coordenadaY ); clear ( BufferSoldado ); blit ( SoldadoIS2, BufferSoldado, 0, 0, 0, 0, 128, 128 ); rectfill ( SoldadoIS2, 128, 128, 200, 200, makecol ( 255, 255, 255 ) ); draw_sprite ( buffer, BufferSoldado, coordenadaX, coordenadaY ); } } //////////////////////////////////////////////////////////////////////////////////////////////////////// ***************En esta funcion ejecuto el juego i el movimiento del char****** int coordenadaX = 352; 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 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// int dirX = 2; //variable para saber si se mueve hacia la derecha o hacia la izquierda, es basicamente para imprimir bien la imagen int dirY = 0; ///////////////////////////////FUNCIONAMIENTO DE EL JUEGO/////////////////////////////////////////////////////////////////////// while ( !key[KEY_ESC] ) { int estatico = 1; ///////////////////////////////MODIFICAMOS DIRECCION EN FUNCION DE LA TECLA, LA DIRECCION I SUS COORDENADAS///////////////////////////////////////////////////////////////// if ( key[KEY_RIGHT] ) { estatico = 0; dirX = 0; coordenadaX = coordenadaX + 32;//modificando estos +32 puedo determinar el avanze del soldado y esto le afectara como realentizacions o como turbo } else { if ( key[KEY_LEFT] ) { estatico = 0; dirX = 1; coordenadaX = coordenadaX - 32; } else { if ( key[KEY_UP] ) { dirY = 2; coordenadaY = coordenadaY - 32; } else { if ( key[KEY_DOWN] ) { dirY = 3; coordenadaY = coordenadaY + 32; } } } } clear ( buffer ); clear ( BufferSoldado ); rest ( 150 ); dibujar_mapa(); dibujar_soldado ( coordenadaX, coordenadaY, dirX, estatico ); imprimir_pantalla(); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// } } END_OF_MAIN();
Suba las imágenes o el proyecto entero a un servidor y ponga aquí. Siendo así conseguirás más ayuda. |