doc - David Bueno Vallejo

Anuncio
Dpto. Lenguajes y Ciencias de la Computación
E.T.S.I. Telecomunicación
Laboratorio de Programación
Introducción a Allegro con Dev-C++
Abril 2004
David Bueno Vallejo
Plan
•
•
•
•
•
•
•
•
Introducci ón
Introducció
Instalació
Instalaci
ón
“Hola Mundo”
Mundo”
Dibujar figuras bá
básicas y colores
Manejo del rató
ratón
Introducir retrasos en el có
código
Cargar imá
imágenes
Minitutoriales
2
1
Introducció
Introducci
ón
• La consola limita mucho las aplicaciones pues tiene una
interfaz textual
• A veces puede ser necesario trabajar con una interfaz
grá
gr
áfica
• Allegro es una librerí
librer ía multiplataforma (funciona sobre
windows//unix
windows
unix//mac os) que permite trabajar de una
forma sencilla con modos grá
gráficos, imá
imágenes, textos,
ventanas, rató
ratón, teclado, sonido o dispositivos de juegos
• La pá
página oficial de allegro en españ
español se encuentra en:
– http://alleg.sourceforge.net/index.es.html
3
Instalació
Instalaci
ón
• La librerí
librería allegro puede descargarse de la pá
página oficial o de:
– http://altair.lcc.uma.es/clases/Laboratorio/curso200304/principal.html#
http://altair.lcc.uma.es/clases/Laboratorio/curso200304/principal.html#
entorno
• El fichero allegro.zip contiene:
– El fichero de instalació
instalació n (Allegro_install.zip
(Allegro_install.zip))
– La ayuda de allegro (allegro.en.chm
(allegro.en.chm))
• Para la instalació
instalació n seguir los pasos siguientes:
–
–
–
–
–
Ejecutar el programa Alleg4DC
Alleg4DC.. exe que esta en el zip Allegro_install.zip
(hay que prestar atenció
atenció n para instalarlo en la misma carpeta en la que
esté
est
é Dev
Dev--C++. Supongamos que está
est á en c:\
c:\ Dev
Dev--Cpp
Cpp))
Despué
Despu
é s de ejecutarlo, en C:\
C:\ Dev
Dev--Cpp
Cpp\\ Dll hay un fichero alleg40.dll
alleg40.dll que
debe acompañ
acompañar a cualquier ejecutable que se cree (es decir, debe ir en
la misma carpeta que el proyecto).
Para comenzar una aplicació
aplicació n con alegro se elige Archivo à Nuevo
Proyecto à Allegro à Allegro Project (DLL Version
Version))
Para que no aparezcan errores es necesario hacer lo siguiente:
En Proyecto à Opciones de Proyecto à Par
Pará
ámetros à Linker
Linker:: -lalleg
4
2
Hola Mundo
#include <allegro.h>
Inicializa pantalla,
void InicializaAllegro () {
teclado y ratón
// Inicializa la librería Allegro.
allegro_init();
set_color_depth(24); // Pone el número de colores a 24 bits
// Selecciona la resolución de la pantalla a 640x480
set_gfx_mode(GFX_SAFE, 640, 480, 0, 0);
install_keyboard (); // Inicializa las funciones de teclado de la librería
install_timer();// Inicializa los temporizadores necesarios para manejar el ratón
install_mouse(); // Prepara el rat ón para poder utilizarlo
show_mouse(screen); // Muestra el ratón en pantalla
}
int main()
Programa básico
{
de Allegro
// Initializa Allegro.
InicializaAllegro();
// Mensajes por pantalla
textout(screen, font, "Hola Mundo!", 1, 1, 0xFFFFFF);
textout(screen, font, "Pulsa ESCape para salir", 1, 12, 0xFF00FF);
// Bucle que para cuando se pulsa la tecla ESC
while(! key[KEY_ESC]) {
poll_keyboard (); // No necesario en windows , limpia el buffer.
}
// Sale correctamente del allegro
Se recomienda mirar con detalle todas las funciones
allegro_exit();
expuestas en la ayuda de allegro para
return 0;
}
conocer exactamente su funcionamiento.
// Macro que llama a WinMain ().
END_OF_MAIN();
5
Dibujar figuras bá
básicas y colores
• En esta librerí
librería la variable screen hace referencia a la pantalla
• Para dibujar rectá
rectángulos
– (hueco): rect(pantalla,x1
rect(pantalla,x1,y1,x2,y2,color)
,y1,x2,y2,color)
– (relleno): rectfill(pantalla,x1,y1,x2,y2,color)
rectfill(pantalla,x1,y1,x2,y2,color)
– Donde (x1,y1) es la esquina superior izquierda del rect ángulo y (x2,y2)
la esquina inferior derecha
– Si la resolució
resolució n es de 640x480 quiere decir que x1,x2 pueden tomar un
valor entre [0..639] e y1,y2 entre [0..479]
– El color es un nú
número hexadecimal en RGB(Rojo
RGB(Rojo,, Verde y Azul)
0xRRGGBB, es decir para cada tonalidad se pueden poner dos valores
valores
entre 00 y FF
– Ejemplos: Blanco(0xFFFFFF), Negro(0x000000), Amarillo(0xFFFF00),
Rojo (0xFF0000)
– En cualquier programa de dibujo se pueden obtener estos valores para
cada color
– Un ejemplo que pintarí
pintaría un rect ángulo rojo serí
sería:
• rect(screen
rect(screen,100,100,200,200,0xFF0000)
,100,100,200,200,0xFF0000)
6
3
Manejo del rató
ratón
• El manejo del rató
ratón tambié
también es muy sencillo. Tras inicializar el rató
rató n
•
•
•
•
•
con install_mouse
install_mouse,, se puede acceder en cualquier momento a las
coordenadas del rató
rató n con las variables enteras mouse_x y
mouse_y..
mouse_y
Por ejemplo, si mouse_x
mouse_x=100
=100 y mouse_y
mouse_y=234
=234 indica que el rató
rató n
está
est
á en la coordenada (100,234) de la pantalla.
Para saber si se ha pulsado el botó
botó n izquierdo del rató
ratón, se puede
utilizar la variable mouse_b que indica si se ha pulsado un botó
botón
La expresió
expresión ( mouse_b & 1) vale 1 si el botó
bot ón izquierdo se ha
pulsado.
Para comprobar si se ha pulsado el botó
botón derecho la expresió
expresión a
consultar es (mouse_b
(mouse_b & 2 == 2)
Para saber si el rató
ratón está
está dentro de un rectá
rectángulo, es suficiente
con comprobar las coordenadas de los extremos. Por ejemplo, si el
el
rató
rat
ón está
está en (x,y
(x,y),
), se localizará
localizará dentro del rectá
rectá ngulo
(100,200,150,250) si se cumple que:
– ((100<x) && (x<150) && (200<y) && (y<250))
7
Introducir retrasos en el có
código
• Si se quiere producir un retraso, es decir, parar la
ejecuci ón durante un tiempo, se puede utilizar la
ejecució
instrucció
instrucci
ón:
– rest(milisegundos
rest(milisegundos))
• Por ejemplo, rest
rest(1000)
(1000) para el programa un segundo
8
4
Cargar imá
imágenes
• Los ficheros de imá
imágenes se carga en una estructura llamada
BITMAP, igual que la utilizada para la variable de pantalla screen
screen..
Por ejemplo, para mostrar en las coordenadas de pantalla
(100,150), una imagen llamada mina.bmp de tamañ
tamaño 16x16, es
necesario la siguiente secuencia de instrucciones
BITMAP *imgmina;
PALLETE pal;
// Definición de la variable de tipo bitmap (puntero)
// Definición de una variable de tipo paleta necesaria para
//llamar a load_bmp
imgmina=create_bitmap(16,16); // Reserva memoria para la imagen con 16 bits de
// ancho y 16 de alto
imgmina=load_bmp (“mina.bmp”,pal); // Carga el fichero mina.bmp en la zona
// reservada
if (imgmina==NULL) {
// Se ha producido un error al cargar la imagen. Mostrar mens aje de error
} else {
blit(imgmina,screen ,0,0,100,150,15,15); // Copia el rectángulo situado en la
//imagen imgmina (0,0,15,15) a la pantalla poniendo la
//parte superior izquierda en (100,150), es decir en el
//rectángulo (100,150,115,165)
}
Mirar en la ayuda de Allegro los detalles
de las funciones mostradas anteriormente.
9
Minitutoriales
•
•
La idea de este documento es la de permitir a un programador iniciarse
iniciarse en la
libreríía allegro
librer
Para un uso má
más avanzado, est án disponibles otros minitutoriales en la pá
página
de la asignatura:
http://altair.lcc.uma.es/clases/Laboratorio/curso200304/index.ht ml
• Estos tutoriales tratan temas como:
–
–
–
–
–
–
–
–
–
–
–
¿C ómo trabajar con clases (Pila)?
¿C ómo Leer Cadena con allegro?
¿C ómo Leer coordenadas de teclado?
¿C ómo hacer un menú
menú?
¿C ómo incluir sonidos?
¿C ómo trabajar con ficheros de datos .dat
. dat??
¿C ómo incluir secuencias de video?
¿C ómo cambiar las fuentes?
¿C ómo trabajar con ficheros?
¿C ómo seleccionar zonas geometricas (triangulos
triangulos,, rectá
rectángulos, circulos
circulos)?
)?
¿C ómo hacer zoom y rotaciones?
10
5
Descargar