Aprendendo Allegro 5
Início Janela Imagens Mensagem Fontes e texto Eventos Mouse Teclado Audio Timer Animações Sprites Jogo exemplo

Criando uma janela

A biblioteca Allegro possui uma série de tipos especiais de ponteiros e de funções. Seu funcionamento nos poupa bastante trabalho pois não precisamos entender como funciona a comunicação com o hardware.

Vamos analisar abaixo um trecho de código. O detalhamento de seu funcionamento será explicado a seguir:

// Inclui o arquivo de cabeçalho da biblioteca Allegro 5
#include <allegro5/allegro.h>

// Nossa conhecida função main...
int main(void)
{
    // Variável representando a janela principal
    ALLEGRO_DISPLAY *janela = NULL;

    // Inicializamos a biblioteca
    al_init();

    // Criamos a nossa janela - dimensões de 640x480 px
    janela = al_create_display(640, 480);

    // Preenchemos a janela de branco
    al_clear_to_color(al_map_rgb(255, 255, 255));

    // Atualiza a tela
    al_flip_display();

    // Segura a execução por 10 segundos
    al_rest(10.0);

    // Finaliza a janela
    al_destroy_display(janela);

    return 0;
}

Na linha 2 podemos ver o include na biblioteca principal do allegro. Nos próximos exemplos iremos fazer include em outras bibliotecas também. Isto se dá porque o allegro é dividido em diversas sub-bibliotecas, e dependendo dos módulos usados em cada programa, fazemos o include dos módulos necessários.

ALLEGRO_DISPLAY

Na linha 8 criamos um ponteiro do tipo ALLEGRO_DISPLAY. Este tipo de ponteiro serve para criar uma janela em nosso programa.

al_init()

Na linha 11 chamamos a função al_init(), que serve para inicializar a biblioteca.

al_create_display()

Na linha 14 chamamos a função al_create_display(), que serve para criar uma janela. Esta função recebe dois parâmetros que são a largura e altura da janela criada. E como ela retorna um ponteiro para a janela criada, atribuímos o retorno da função à variável janela que criamos antes.

al_clear_to_color()

Na linha 17 chamamos a função al_clear_to_color(), que preenche uma superfície com uma cor. Como não definimos nenhuma superfície (ainda), ele vai preencher a única existente, a janela. O parâmetro dela é uma cor (ALLEGRO_COLOR).

al_map_rgb()

A função al_map_rgb() recebe três números, compostos pelos pigmentos vermelho (R), verde (G) e azul (B). Cada um destes pigmentos vai de 0 a 255. A função retorna a cor gerada pela junção dos três pigmentos. Como usamos o retorno de al_map_rgb() como perâmetro de al_clear_to_color(), a cor gerada é preenchida na janela. Veja também a função al_map_rgba() para saber como criar cores com transparência.

al_flip_display()

Na linha 20 chamamos a função al_flip_display(), que faz com que o conteúdo de janela apareça na tela do computador. Note que até então só tínhamos criado o ponteiro janela na linha 8, criamos a janela (display) e dissemos que o ponteiro janela representará o display na linha 14. Na linha 17 preenchemos a janela com a cor branca (RGB 255,255,255). Mas em nenhum momento dissemos para a janela criada e colorida aparecer na tela. Isto é feito nessa linha 20, com o al_flip_display().

al_rest()

Na linha 23, usamos a função al_rest(), que faz com que o programa pare por um determinado tempo. Esta função recebe por parâmetro um valor numérico (double), que representa o número de segundos que o programa ficará parado. Portanto al_rest(10) faz com que o programa fiquei parado 10s enquanto al_rest(0.001) equivale a 1ms. Futuramente iremos abordar maneiras mais eficientes de controlar o tempo no allegro.

al_destroy_display()

E finalmente, na linha 26 chamamos a função al_destroy_display(), que recebe um ponteiro ALLEGRO_DISPLAY, e desaloca este display, liberando o ponteiro para outro uso.

O resultado do programa acima será o surgimento de uma tela banca de 640x480px. Após 10 segundos, esta tela some e o programa encerra.

Outros links