#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();