Código:
#include <allegro.h> #include "inicia.h" #define ancho_pantalla 340 #define alto_pantalla 380 //------------------------POO---------------------------- class Personaje { public: BITMAP *Personaj; BITMAP *buffer_pers; int ancho, alto, posx, posy, Estado, dir, contador, restador; Personaje(BITMAP *pers, BITMAP *mini_buffer); void Dibujar(BITMAP *buffer, BITMAP *izquierda); void Dibujar_accion(BITMAP *buffer, BITMAP *accion); void caminar(); void Correr(); void Saltar(); void morir(); void Agacharse(); void Disparar(); void Matar(); }; Personaje::Personaje(BITMAP *pers, BITMAP *mini_buffer){ Personaj = pers; buffer_pers = mini_buffer; dir = 1; ancho = 37; alto = 37; posx = 0; posy = 100; contador = 0; Estado = 0; restador = 2; } void Personaje::Dibujar(BITMAP *buffer, BITMAP *izquierda){ if (dir == 1){ blit(Personaj,buffer_pers,0,0,0,0,37,37); draw_sprite(buffer,buffer_pers,posx,posy); } else{ blit(izquierda,buffer_pers,0,0,0,0,37,37); draw_sprite(buffer,buffer_pers,posx,posy); } } void Personaje::Dibujar_accion(BITMAP *buffer, BITMAP *accion){ if (Estado == 1){ if (dir == 1){ if (contador < 3){ blit(accion,buffer_pers,contador*37,0,0,0,37,37); draw_sprite(buffer,buffer_pers,posx,posy); rest(80); } else{ contador = 0; } contador++; } else{ if (restador >= 0){ blit(accion,buffer_pers,restador*37,0,0,0,37,37); draw_sprite(buffer,buffer_pers,posx,posy); rest(80); } else{ restador = 2; } restador--; } } } void Personaje::caminar(){ if (dir==1 and posx < ancho_pantalla-ancho){ posx +=10; } else if(dir == -1 and posx >= 0){ posx -= 10; } } //----------------------------struct-------------------------------- BITMAP *buffer; BITMAP *mario_buffer; BITMAP *mario_parado; BITMAP *mario_paradoI; BITMAP *mario_caminar; BITMAP *mario_caminarI; void pantalla(){ blit(buffer,screen,0,0,0,0,ancho_pantalla,alto_pantalla); } int main() { inicia_allegro(ancho_pantalla,alto_pantalla); inicia_audio(70,70); buffer = create_bitmap(ancho_pantalla, alto_pantalla); mario_buffer = create_bitmap(37,37); mario_parado = load_bitmap("recursos/parado.bmp",NULL); mario_paradoI = load_bitmap("recursos/parado_i.bmp",NULL); mario_caminar = load_bitmap("recursos/caminar_adelante.bmp",NULL); mario_caminarI = load_bitmap("recursos/caminar_atras.bmp",NULL); Personaje mario(mario_parado, mario_buffer); while (!key[KEY_ESC]){ if (key[KEY_D]){ mario.dir = 1; mario.Estado = 1; mario.caminar(); } else if(key[KEY_A]){ mario.dir = -1; mario.Estado = 1; mario.caminar(); } else if (keypressed){ mario.Estado = 0; } clear(buffer); if (mario.Estado == 0){ if (mario.dir == 1){ mario.Dibujar(buffer,NULL); } else{ mario.Dibujar(buffer,mario_paradoI); } } else{ if(mario.dir == 1) mario.Dibujar_accion(buffer,mario_caminar); else mario.Dibujar_accion(buffer,mario_caminarI); } pantalla(); rest(30); } destroy_bitmap(buffer); return 0; } END_OF_MAIN();