1.Descomprime el archivo en cualquier directorio y verás que aparece el fichero allegro-4.2.0-1mol.DevPak, le das doble click y le das click al botón Next para continuar.
2.Se presenta el clásico ReadMe, das click nuevamente en Next:
3.Ahora viene el acuerdo de licencia, das click ahora en Install y empezará el proceso de instalación
4.Una vez terminada la instalación se nos indica que le proceso ha sido exitoso. Click en Finish y terminamos esta parte. Prueba de la librería
1.Abre el compilador, vas a Archivo -> Nuevo -> Proyecto y en la pestaña Multimedia seleccionas Allegro application (static) y das click en Aceptar.
2.Selecciona en donde quieres guardar el archivo del proyecto y se te presentará a continuación un código de ejemplo, el cual simplemente muestra como inicializar la librería.
3.Presiona CTRL+S para guardar el archivo fuente mostrado. Luego presiona CTRL+F9 para compilar el programa, se presentará un cuadro indicandonos que la compilación ha sido exitosa, damos click en Cerrar.
4.Por último presiona CTRL+F10 para ejecutar el programa, verás una pantalla negra, presiona ESC para salir.
Allegro es una excelente libreria para gráficos en 2 dimensiones que tambien maneja sonido, joystick, teclado, mouse y temporizador. Tiene la expansión AllegroGL (que permite utilizar OpenGL con Allegro) para poder crear graficos en 3D. Una de las principales ventajas que tiene es que fue específicamente diseñado para la programación de videojuegos, por lo que todas las rutinas que utiliza están hechas para ser fáciles de manejar y sobretodo eficiente desde el punto de vista de un juego. Además de que tiene ya preconstruidas ciertas funciones para realizar algunos efectos que normalmente tendrías que
programar a mano. Otro tanto a favor es que es multiplataforma, lo que quiere decir que se puede
generar código para Windows, Linux y otros sistemas sin modificar línea alguna. Es una librería bastante simple de utilizar y suficientemente potente para una primera incursión en el mundo gráfico.
Despues de haber instalado la libreria nos creamos inicialmente un proyecto, con cualquier nombre y en la direccion de nuestra preferencia y seguimos los pasos descritos a continuacion:
Incluimos la librería
Como para cualquier librería que fuéramos a usar la incluimos con #include<allegro.h>. En el punto allegro_init() estamos llamando a la librería, todavía hasta acá no está haciendo nada pero, desde acá podemos empezar a utilizar las funciones de allegro. El cuerpo de nuestro programa se encuentra entre allegro_init() y allegro_exit(), cualquier función de allegro que utilicemos tiene que ir en este espacio, o generará un error. Con la funcion allegro_exit() cerramos la librería, llamamos a esta función cuando ya no vamos a utilizar más las funciones de allegro.La sentencia END_OF_MAIN() es necesario para que funcione en Unix/Linux y Windows.
La sentecia install_keyboard() le entrega al allegro el control del teclado, lo que nos permitirá utilizar sus funciones para capturar datos. Posteriormente install_timer() instala los temporizadores del allegro, funciones para manejar el control del tiempo, necesario para el mouse. Finalmente install_mouse() le da al allegro el control del mouse esto nos permitirá utilizar las rutinas que posee para controlarlo. Cualquier función de allegro que utilice el mouse, el teclado o los temporizadores, debe estar despues de los install_* y antes del allegro_exit(). Si tratamos de utilizar cualquier función de acceso a los periféricos del c/c++ después de entregarle el control al allegro generaremos un error grave.
Hasta este punto, hemos empezado utilizando a algunas funciones de allegro, pero aún no se muestra nada nuevo en pantalla. La funcion set_color_depth(8) especifica la profundidad de color a la que deseamos trabajar (8,16,32 bits), la profundidad por defecto es 8 bits, mientras más alta es más lento y más bonito. Luego con la funcion set_gfx_mode(GFX_AUTODETECT,800,600,0,0) inicia el modo gráfico donde:
Los parametros 800 y 600 es la resolución de la pantalla que deseemos abrir (800x600 pixels) allegro permite abrir cualquier resolución que soporte la tarjeta de video, GFX_AUTODETECT es el driver de la tarjeta de video, para que allegro la detecte y finalmente 0 y 0 es la posicion de la pantalla.
Funciones principales de allegro
Estas funciones me permiten imprimir variables y texto en un Bitmap, por el momento Bitmap entendamoslo como la pantalla, mas adelante se lo vera con mas enfacis y se dara un concepto mas claro.
void textprintf(Bitmap* bmp, font f, int x, int y, int c, char* formato, var1, var2, ... , varn);
Imprime en bmp, con la fuente f, en la posicion (x,y) y del color c las variables var1, var2, ... varn.
void textout(Bitmap* bmp, font f, char* cad,int x, int y, int c);
Imprime en bmp, con la fuente f, en la posicion (x,y) y del color c la cadena cad.
void text_mode(int c);
Define c como el color del fondo del texto a imprimir en pantalla, si se coloca el valor −1, se imprime transparente.
Allegro posee muchas funciones para dibujar primitivas de dibujo, que van desde puntos hasta poligonos.
void putpixel(Bitmap *bmp,int x,int y,int c);
Coloca un punto de color c en la posición (x,y) de bmp
int getpixel(Bitmap *bmp,int x,int y);
Devuelve el número del color que hay en la posición (x,y) de bmp
int line(Bitmap *bmp,int x1,int y1, int x2,int y2, int c);
Dibuja un segmento de línea, desde la posición (x1,y1) hasta la posición (x2,y2) de bmp con el color c.
int rect(Bitmap *bmp,int x1,int y1, int x2,int y2, int c);
Dibuja un rectángulo, desde la posición (x1,y1) hasta la posición (x2,y2) de bmp con el color c en su borde y sin rellenar.
int rectfill(Bitmap *bmp,int x1,int y1, int x2,int y2, int c);
Dibuja un rectángulo, desde la posición (x1,y1) hasta la posición (x2,y2) de bmp relleno con el color c, y sin borde.
void circle(Bitmap *bmp,int x,int y,int r,int c);
Dibuja un circulo de radio r con centro (x,y) de bmp y de color de borde c, sin relleno.
Dibuja un circulo de radio r con centro (x,y) de bmp y de color de relleno c y sin borde.
int floodfill(Bitmap *bmp,int x,int y, int c);
Rellena con el color c, un área cerrada, empezando por x,y.
Ahora veremos las funciones que presenta allegro para acceder al teclado, recordemos que para utilizarlas debemos llamar primero a install_keyboard().
int readkey(void);
Detiene la ejecución del programa en espera de que presionen UNA sola tecla, devuelve el código ascii,
de la tecla presionada, NO imprime en pantalla la tecla presionada.
int keypressed(void);
Esta función devuelve 1 cuando se ha presionado una tecla y sigue, en este estado hasta que se limpie el buffer de teclado.
int clear_keybuf(void);
Limpia el buffer del teclado.
Las funciones anteriores detenían la ejecución del programa, si lo que necesitamos es capturar alguna tecla sin parar la acción en el programa podremos utilizar el vector key[].
El vector key devuelve verdadero (0) si esta presionada la tecla que se le especifique en el subíndice, por ejemplo:
while(!key[KEY_ESC])
{
if (key[KEY_ENTER])
printf(“Tecla enter”);
}
Allegro posee unas rutinas muy sencillas para el control del ratón, recuerda que para utilizarlas deberás haber llamado antes a install_mouse().
void show_mouse(Bitmap *bmp);
Muestra el cursor del ratón en el Bitmap bmp, por lo general screen, para quitar el mouse de bmp usar show_mouse(NULL).
void scare_mouse(void);
Esconde el cursor del ratón, aunque este siga estando allí, necesario cuando se va a dibujar algo en el mismo bitmap en que esta el mouse.
void unscare_mouse(void);
Muestra de nuevo el cursor del mouse.
void position_mouse(void);
Lleva el mouse a la posición x,y.
void set_mouse_sprite(Bitmap *bmp);
Cambia el cursor del ratón (la flecha por defecto), por el bitmap que le mandemos.
void set_mouse_sprite_focus(int x, int y);
Especifica que posición del cursor, representará la posición actual del mouse.
void set_mouse_range(int x1, int y1, int x2, int y2);
Limita el movimiento del ratón al recuadro definido por x1,y1 −> x2,y2.
void set_mouse_speed(int x, int y);
Especifica la velocidad del ratón, el valor por defecto es 2 para ambos, valores mayores implican un movimiento más lento.
int mouse_x;
int mouse_y;
Variables globales que contienen en todo momento, la posición del ratón.
int mouse_b;
Variable global que guarda el estado de los botones del ratón, para acceder a ellos se necesitará la comparación bit a bit, asi:
mouse_b&1 −> Verdadero si el botón izquierdo está presionado. mouse_b&2 −> Verdadero si el botón derecho está presionado. mouse_b&4 −> Verdadero si el botón central está presionado.
Bitmaps
Los BITMAP *, son variables que representan un rectángulo, sobre el que puedo dibujar cosas, para allegro la pantalla (screen) es un BITMAP*, y para toda función que dibuje algo hay que específicarle
en que BITMAP, deseamos que lo haga. Sin embargo, el hecho que creemos un BITMAP* y dibujemos sobre el no implica que esto último se muestre en la pantalla, sino que quedará almacenado en la memoria para poder usarlo después.
BITMAP * bmp;
Declara a bmp como una variable de tipo Bitmap.
BITMAP * create_bitmap(int x, int y);
Reserva memoria para un bitmap de tamaño x,y, para poder dibujar sobre un bitmap hay que utilizar esta función primero.
void destroy_bitmap(Btimap * bmp);
Libera la memoria que tenía reservada un bitmap.
void blit(BITMAP* origen, BITPMAP* destino, int xorigen, int yorigen, int xdestino, int ydestino, int tamax, int tamy);
Dibuja del bitmap “origen” en la posición xorigen,yorigen, al bitmap destino en la posición xdestino, ydestino, un recuadro de tamaño tamax*tamay.
void clear(BITMAP* bmp);
Limpia el bitmap “bmp” al color 0, negro a menos que se cambie.
void clear_to_color(BITMAP* bmp,int c);
Limpia el bitmap bmp al color c.
void draw_sprite(BITMAP* destino,BITMAP* sprite, int x, int y);
Dibuja el bitmap sprite en la posición x,y, pero dibujando el color, 0 como transparente (esto es para 8bits, en 16bits o más es el rojo fuccia, rojo y azul al máximo, verde en 0).
void stretch_blit(BITMAP* origen, BITPMAP* destino, int xorigen, int yorigen,int tamxorigen, int tamyorigen, int xdestino, int ydestino, int tamaxdestino, int tamydestino);
Lo mismo que el blit, pero permite cambiarle el tamaño al bitmap destino.
void rotate_sprite(BITMAP* destino, BITPMAP* sprite, int x, int y, fixed angulo);
Dibuja un sprite pero rotado "angulo", para especificar el ángulo se puede utilizar la función itofix(int a), a la que si le enviamos 255 como parametro estaremos hablando de un giro completo.
Paleta
Cuando el allegro esta trabajando con una profundidad de color de 8 bits utiliza una paleta para dibujar cada uno de los colores, la paleta no es más que un vector de colores, donde cada color tiene un índice asignado. Cuando creamos un bitmap este en realidad no guarda colores, sino índices de colores y cuando le pedimos al allegro que los dibuje, este cambia esos índices por el color que contenga la paleta en esa posición. Nosotros podemos crear nuestras propias paletas, si queremos crear nuevos
colores o para cargar imágenes, sin embargo el allegro solo empezará a utilizarla cuando se lo digamos.
Para crear una paleta declaramos una variable de tipo PALETTE, asi:
PALETTE paleta;
Para decirle al allegro que la utilice necesitamos usar la siguiente función:
void set_palette(PALETTE pal);
Si utilizamos una nueva paleta, todas las cosas que hallamos dibujado en pantalla, cambiarán de color, haciendo referencia a la nueva paleta.
Cargar imagenes
Allegro permite cargar imágenes en formato BMP, TGA y PCX, para hacer esto podemos utilizar la función:
BITMAP* load_bitmap(char * arch, PALETTE pal);
Que crea y retorna un bitmap, cargado desde el archivo arch, y con la paleta pal.
Es importante resaltar que no es necesario utilizar create_bitmap si se usa esta función y que es necesario decirle al allegro que utilice la paleta de la imagen, ya que cada imagen utiliza su propia paleta, que está optimizada para mostrar lo que la imagen contenga.
Para plasmar cada uno de los conceptos de las funciones que maneja esta libreria el lector puede tener acceso al siguiente ejemplo, descargandolo del link:
Este ejemplo contiene el uso de las funciones descritas en el tutorial, las carpetas "graficos" y "sonidos" deben ser copiadas en el disco C:, ademas que tiene algunas funciones mas extras que pueden ser entendibles compilando paso a paso este ejemplo.
AUTOR: Ing. Juan Pablo Arispe G.
Hoy habia 4 visitantes (4 clics a subpáginas) ¡Aqui en esta página!