Creacion de juegos en C++. Explicación del código de prueba

Previamente se aprendio a configurar Visual Studio C++ Express para usar el motor de juegos ALLEGRO. Ahora veremos mas a fondo el código.

Archivo de cabecera de ALLEGRO

#include <allegro.h>

#pragma especifica las librerias adicionales de ALLEGRO. Cheque en otros ejemplos con otros compiladores y esta linea no va, no se a que se deba. Pero en Visual Studio C++ Express, tendra errores de Linker si esta es removida. Los otros ejemplos simplemente agregue la linea y casi ningun programa tuvo problemas

#pragma comment(lib, "alleg.lib")

Metodo de arranque del juego.

int main(int argc, char* argv[])
{

allegro_init es un macro que inicializar la libreria de ALLEGRO

allegro_init();

install_timer Instala el manejador de interrupciones del temporizador(timer).
Esta instruccion se debe llamar antes que los otros manejadores (de mouse, animaciones FLI, MIDis, etc…)

	install_timer();

install_keyboard debe ser llamada antes que cualquier otra rutina que sirva para la funcionalidad de entrada de datos para el teclado

	install_keyboard();

set_color_depth define la pronfundidad de los colores. Los valores pueden ser 8 (siendo el valor predeterminado), 15, 16, 24, 32.

        set_color_depth(24);

set_gfx_mode define el tipo de tarjeta gráfica que se esta usando y el tamaño de pantalla para el juego. Da click aquí para ver los tipos de modo gráfico que hay. Los siguientes dos parametros son para el ancho y alto de la pantalla (800×600 px). Los ultimos dos parametros representan el minimo de la pantalla virtual (ancho virtual y alto virtual).  Este es solo en caso de que necesites una pantalla virtual grande para el scroll por hardware o hacer paginado.

      (0,0)------------(640,0)----(1024,0)
	|                  |           |
	|  visible screen  |           |
	|                  |           |
      (0,480)----------(640,480)       |
	|                              |
	|   the rest of video memory   |
	|                              |
      (0,1024)--------------------(1024,1024)

Algo asi. Pero como este no es el caso lo pondremos en cero.

	set_gfx_mode(GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0);

backbuffer es estructura de un mapa de bits en ALLEGRO. Se puede crear con con el metodo create_bitmap y asi este quedara en memoria. Sus caracteristicas son las siguientes:

int w, h; – Ancho y alto en pixeles del mapa de bits.

int clip; – Es diferente a zero si el clip esta encendido (visible).

int cl, cr, ct, cb; – Puntos de clip del bitmap.

unsigned char *line[]; – Punteros que hacen referencia a las lineas que serán dibujas en el mapa de bits

SCREEN_W y SCREEN_H, son los defines globales encargados de regresar el ancho y alto de la pantalla.

	BITMAP* backBuffer = create_bitmap(SCREEN_W, SCREEN_H);

makecol Convierte un valor RGB en un formato de pixeles. Este entero que se regresa es usado como parametro en la mayoria de las rutinas.

	const int WHITE = makecol(255, 255, 255);

Una vez que el programe ejecuto todas las sentencias, pasaremos a este ciclo donde terminara si se presiona la letra escape. key es un arreglo que indica el estado del teclado. key[ALGUNA_TECLA] regresa true o false.

	while(!key[KEY_ESC])
	{

clear_bitmap hace a un mapa de bits de color negro

		clear_bitmap(backBuffer);

text_printf_ex dibuja un texto. Esta funcion se le puede dar un formato numerico (%d, %f) como la sentencia printf. Debido a la limitacion de esta función no se puede mandar a imprimir cadenas grandes.

font es un estilo de letra sencillo de 8×8 (unas de las constantes de ALLEGRO. WHITE es la constante hecha con la sentencia makecol.

8 y 32 es la posicion de X y Y.

-1 es el color del Background del texto. Recuerda, puedes poner un color rojo o verde por ejemplo, con la instrucción makecol como la constante WHITE.

		textprintf_ex(backBuffer, font, 8, 32, WHITE, -1, "Hello World!");

blit copia el area rectangular de un mapa de Bits a otro. backbuffer es el original y screen(dentro de blit) es el BITMAP destino.

screen es el puntero global de la memoria de video.

Los primero dos ceros es el punto inicial (X,Y) del mapa de bit original y los otros dos es el punto inicial del mapa de bits destino.

backbuffer->w y  backbuffer->h es el ancho y alto del bitmap original que se va a copiar.

		blit(backBuffer, screen, 0, 0, 0, 0, backBuffer->w, backBuffer->h);

rest hace esperar al timer x cantidad se ms. En este caso 1 ms.

		rest(1);
	}

destroy_bitmap elimina cualquier tipo de bitmap creado.

	destroy_bitmap(backBuffer);
	return 0;
}

END_OF_MAIN sirve para manterner compatibilidad entra varias plataformas y que no haya problemas al terminar el programa (sea Windows, Linux, etc…).

END_OF_MAIN()
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s