Programação 2010/2011
MEAer - LEE
1 - Introdução
A biblioteca gráfica allegro foi desenvolvida com o objectivo de ser utilizada no desenvolvimento
de jogos e também que podesse funcionar em diversas plataformas. Mais informações sobre a sua
utilização assim como o acesso aos manuais pode ser obtida em http://alleg.sourceforge.net/
Neste documento pretende-se apresentar exemplos de programas simples que devem ser
analisados e testados e que servem de auxílio ao desenvolvimento do trabalho final da cadeira.
O programa seguinte permite testar se a biblioteca está instalada, e também permite obter a versão da
biblioteca.
#include <stdio.h>
#include <allegro.h> /* Para usar funções da biblioteca allegro */
int main()
{
printf("Exemplo I: Teste da biblioteca allegro \n");
allegro_init();
printf("----------------------------------------------\n");
printf("Versão da biblioteca Allegro = %s \n", allegro_id);
printf("----------------------------------------------\n");
allegro_exit();
return 0;
}
/* Isto é obrigatório */
END_OF_MAIN()
Tenha em atenção o nome do ficheiro fonte, o nome do ficheiro executável e os símbolos questão
a delimiter a sequência de caracteres allegro-config –libs . Esta última sequência permite obter
uma lista de opções que é passada para o compilar gcc. Para ver a lista de opções pode executar
na linha de commando
1/7
Departamento de Engenharia Electrotécnica e de Computadores Programação
Instituto Superior Técnico
#include <stdio.h>
#include <allegro.h>
int main()
{
printf("<<< Teste da biblioteca Allegro >>>\n");
allegro_init();
allegro_message("1 - Welcome To Allegro!");
allegro_exit();
return 0;
}
END_OF_MAIN()
#include <stdio.h>
#include <allegro.h>
int main()
{
int ret;
int x, y;
int cor; /* Pode assumir valor de 0, 1, ..., 15 */
/* Ou pode ser gerado com makecol(255,255, 255)
usando a técnica de RBG (Red, Blue, Green) */
2/7
Departamento de Engenharia Electrotécnica e de Computadores Programação
Instituto Superior Técnico
/* Inicializa */
allegro_init();
/* Inicializa o teclado */
install_keyboard();
/*
screen --- Global pointer to a bitmap, definida em allegro.h,
font -- Define o tipo de fonte para desenhar os caracteres
*/
/* Para posicionar o texto na janela */
/* Alterar os valores de x: 0 <= x < 640
y: 0 <= y < 480
para ver o que acontece.
*/
x = LARGURA_JANELA / 2;
y = ALTURA_JANELA / 3;
textprintf_ex(screen, font, x, y, makecol(255,255, 255), -1,
"%dx%d", SCREEN_W, SCREEN_H);
3/7
Departamento de Engenharia Electrotécnica e de Computadores Programação
Instituto Superior Técnico
void vline(BITMAP *bmp, int x, int y1, int y2, int color);
*/
/* Teste o resultado da função vline */
/* desenha um linha
void line(BITMAP *bmp, int x1, int y1,
int x2, int y2, int color);
*/
line(screen, 300, 50, 500, 120, 5);
/*
Qual é o reultado desta função?
void circle(BITMAP *bmp, int x, int y,
int radius, int color);
*/
circle(screen, 120, 130, 15, 7);
circle(screen, 120, 130, 20, 7);
/* Termina */
allegro_exit();
return 0;
}
END_OF_MAIN()
Analise o programa seguinte. Determine a acção de cada uma das funções que são apresentadas.
Determine qual é a tecla que ao ser pressionada permite parar o programa.
Depois compile o programa e execute-o.
#include <stdio.h>
#include <time.h> /* Para usar o time() */
#include <stdlib.h> /* Para usar a função srand() e rand()*/
#include <allegro.h>
/*------------------------------------------
Function:
4/7
Departamento de Engenharia Electrotécnica e de Computadores Programação
Instituto Superior Técnico
Parametros:
Descrição:
Autor:
Data:
--------------------------------------------*/
int my_rand()
{
int r = rand();
int step;
if (r > RAND_MAX/2)
step = 1;
else
if (r == RAND_MAX/2)
step = 0;
else
step = -1;
return step;
}
/*------------------------------------------
Function:
Parametros:
Descrição:
Autor:
Data:
--------------------------------------------*/
int cria_cor(int x, int y)
{
/* Codigos de cor
0 - Black
1 - Drak Blue
2 - Dark Green
3 - Dark Cyan
4 - Dark Red
5 - Dark Mangenta
6 - Orange
7 - Gray
8 - Dark Gray
9 - Blue
10 - Green
11 - Cyan
12 - Red
13 - Magenta
14 - Yellow
15 - White
*/
5/7
Departamento de Engenharia Electrotécnica e de Computadores Programação
Instituto Superior Técnico
/*------------------------------------------
Function:
Parametros:
Descrição:
Autor:
Data:
--------------------------------------------*/
int limita (int z, int Zmin, int Zmax)
{
if ( z < Zmin)
z = Zmin;
if ( z > Zmax)
z = Zmax;
return z;
}
/*------------------------------------------
Function:
Parametros:
Descrição:
Autor:
Data:
--------------------------------------------*/
dx = my_rand();
dy = my_rand();
int main()
{
int ret;
int x, y;
/* Inicializa */
allegro_init();
/* Inicializa o teclado */
install_keyboard();
6/7
Departamento de Engenharia Electrotécnica e de Computadores Programação
Instituto Superior Técnico
x = LARGURA_JANELA / 2;
y = ALTURA_JANELA / 3;
textprintf_ex(screen, font, x, y, makecol(255,255, 255), -1,
"FORMIGA ... %dx%d", SCREEN_W, SCREEN_H);
/* Termina */
allegro_exit();
return 0;
}
END_OF_MAIN()
7/7