El primer Escenario (2)

Esta es la continuación de la entrega anterior El primer escenario.



GLOBAL.H

El siguiente código corresponde al archivo global.h, que contiene todas las variables y funciones globales de nuestro programa.

/* GLOBAL.H 

*/

// Ancho y alto de la pantalla
const int PANTALLA_ANCHO = 800;
const int PANTALLA_ALTO  = 600;

// En este BITMAP dibujaremos todo
BITMAP *buffer;

// es el espacio en pixel que recorre el jugador al andar
const int desplazamiento=4;


// Copiar el buffer a la pantalla del juego (screen)
void pintar_pantalla()
{
    blit(buffer, screen, 0, 0, 0, 0, PANTALLA_ANCHO, PANTALLA_ALTO);
}

// controla el bucle principal
bool salir;

// Variable usada para la velocidad
volatile unsigned int contador_tiempo_juego = 0;

const int FRAME_RATE = 30;

// Función para controlar la velocidad
void inc_contador_tiempo_juego()
{
    contador_tiempo_juego++;
}
END_OF_FUNCTION(inc_contador_tiempo_juego)



Se define dos constantes para indicar el tamaño de la pantalla, PANTALLA_ANCHO y PANTALLA_ALTO.

Se define la variable buffer del tipo BITMAP, que se utilizará para almacenar las imagenes antes de mostrar por pantalla.

La constante desplazamiento indica el numero de pixel que se desplaza el personaje cada vez que se pulsa alguna tecla de dirección.

La función pintar_pantalla, es la que se encarga de volcar el contenido de la variable buffer a la pantalla ( screen ).

Se define la variable salir como un tipo boolean.

Y el resto se crea para el control de los FPS,  la variable contador_tiempo_juego cuenta los ticks o veces que se llama la función.

PLAYER.H


// players.h

// Esta clase se encarga del manejo del jugador
class player
{
    BITMAP *prota;  
 int x,y;
 int direccion;
 int animacion; 
          
    public:  
       void inicia();    
       void pinta(); 
       void teclado(); 
       int getx(){ return x; };
       int gety(){ return y; };
       void posiciona( int _x, int _y);
};


void player::inicia()
{
    prota  = load_bmp("personaje.bmp",NULL); 
 // inicializar vbles
 direccion = 0;
 animacion = 0;
 x = 540;
 y = 280;        
}


void player::pinta()
{
    masked_blit(prota, buffer, animacion*32, direccion*32, x, y, 32,32);  
} 

void player::teclado()
{
      int ax = x;
      int ay = y;
      // teclas control usuario
      if ( key[KEY_UP] )
      {
           y-=desplazamiento; 
           direccion = 3;              
      }
      if ( key[KEY_DOWN] )
      {
           y+=desplazamiento;
           direccion = 0;
      }
      if ( key[KEY_LEFT] )
      {
           x-=desplazamiento;
           direccion = 1;
      }
      if ( key[KEY_RIGHT] )
      {
           x+=desplazamiento;
           direccion = 2;
      }  
      if ( ax != x || ay != y )
      {
           // entra si a cambiado alguna de las variables x,y
           animacion++;
           if ( animacion > 2 ) animacion = 0;
      }                            
      
      // limites globales
      if ( x < 0 ) x = 0;
      if ( x > PANTALLA_ANCHO ) x = PANTALLA_ANCHO;
      if ( y < 0 ) y = 0;
      if ( y > PANTALLA_ALTO )  y = PANTALLA_ALTO;      
}

void player::posiciona( int _x, int _y)
{
     x=_x;
     y=_y;
}

En este archivo esta definida la clase player, que se encarga de todas las funciones del jugador.
La función inicia se encarga de dar valores a las variables del personaje para situarlo dentro de nuestro escenario.

La función pinta se encarga de pintar el personaje, sobre el buffer, según las variables sitúa al personaje en una posición concreta.

La función teclado se encarga de controlar todas las teclas que manejan al personaje. En este caso se utilizan las teclas de flechas de cursor.

Ya queda menos! ... continuará.

SHARE
    Blogger Comment

2 comentarios:

  1. saltan muchos errores... creo que deberias explicar el como agregar clases con el allegro y tambien los voids deberias explicarlos...

    ResponderEliminar
  2. todo bien hasta ahora. esta facil de comprender y seguri hasta el momento. mucho animo mi amigo

    ResponderEliminar