El primer Escenario (1)

En esta entrega se hará un escenario que pueda recorrer nuestro personaje.




Para crear nuestro escenario se utilizarán tres imágenes.

Una imagen del escenario, que se utilizará de fondo y se almacenará en la variable "fondo".

Una segunda imagen que contendrá las partes de nuestro escenario que están por encima del personaje, que se guarda en la variable "cielo".

Y una tercera imagen para controlar la colisión, de esta manera nuestro personaje no podrá atravesar todo por donde quiera. Esta imagen se guarda en la variable "choque".

A continuación tenéis un ejemplo de las tres imágenes.
1. Choque.  2. Fondo.  3. Cielo

Para la imagen de choque tendrá los siguientes requisitos, el fondo de la imagen debe ser de color negro, y las partes que se quiera que el personaje colisione debe pintarse de rojo.

Para la imagen del cielo todo lo que se quiera hacer transparente debe de pintarse de color rosado, concretamente el color (0xff00ff).


Programación


  
#include <allegro.h>
#include "global.h"
#include "players.h"
#include "mijuego.h"

 
   
void inicia_allegro()
{
 allegro_init();
 install_keyboard();
 
 set_color_depth(32);
 set_gfx_mode(GFX_AUTODETECT_WINDOWED, PANTALLA_ANCHO, PANTALLA_ALTO, 0, 0);
 
 buffer = create_bitmap(PANTALLA_ANCHO, PANTALLA_ALTO);    
    
    LOCK_VARIABLE(contador_tiempo_juego);
    LOCK_FUNCTION(inc_contador_tiempo_juego); 
    
    // Iniciamos el limitador de FPS
    install_int_ex(inc_contador_tiempo_juego, BPS_TO_TIMER( FRAME_RATE ));    
}
         
       
   
// programa principal 
int main()  
{ 
    inicia_allegro();
    
    carga_juego();
          
 salir = false;
  
    
 while ( !salir )
 {   
          if ( contador_tiempo_juego )
          {
                while ( contador_tiempo_juego )
                {
                    actualiza_juego();
    
                    contador_tiempo_juego--;
                }  
                
                clear_to_color(buffer, 0x00000);    
                
                pinta_juego();
                
                pintar_pantalla();         
                
          }else{
                                    
               rest(1);  
          }
       // tecla de salida
       if ( key[KEY_ESC] ) salir = true;
    }   
  
 destroy_bitmap(buffer);
 
 return 0;
}
END_OF_MAIN();

Para este programa se utilizan cuatro archivos, y este código anterior se debe de guardar con el nombre main.cpp.

Este es el código principal, en el se incluyen las librerías que se utilizan como allegro y tres archivos mas: global, player y mijuego. Estos códigos serán explicados en las próximas entradas.

Tiene una función llamada inicia_allegro(), que se encarga de inicializar el entorno de la librería allegro, define una ventana con el tamaño dado por las variable pantalla_ancho y pantalla_alto.
Inicializa la variable buffer con un bitmap del mismo tamaño que la ventana. Y prepara las funciones para el control de los frames por segundo (FPS).

En el programa principal  se repite todo mientras no sea salir. Para salir debes de pulsar la tecla ESC. Mientras se estará actualizando el juego, borra la pantalla, pinta el juego y lo muestra por pantalla. Todo esto se repetirá según los FPS que se hayan puesto, que para nuestro ejemplo será 30 veces por segundo.

Para que no se haga muy largo lo he dividido en varias partes. Continúa en la próxima entrega.
SHARE
    Blogger Comment

2 comentarios:

  1. hola. muchas gracias por todo. una pregunta...donde puedo crear mapas para el juego rpg y sacarlos para pintarlos con los colores que necesita allegro?, ademas que dimensiones debe tener

    ResponderEliminar
    Respuestas
    1. Se pueden crear en cualquier editor de imagen. Yo utilizo el adobe photoshop. Con respecto a las imágenes debes guardarlas en formato BMP de 8-bit, 16-bit, 24-bit o 32-bit. Con las dimensiones que tu quieras, teniendo en cuenta que las imágenes choque, fondo y cielo de un mismo escenario deben tener el mismo tamaño. Puedes conseguir imágenes para utilizar buscando en google: "RPG MAKER TILESET".

      Eliminar