Conheça a iniciativa da Biblioteca dos Desenvolvedores  
Índice da Biblioteca  
Área dos Usuários  
Fórum de Discussão  
Forúm
 
 

Biblioteca Allegro


A biblioteca allegro fornece várias rotinas de baixo nível para programadores de C/C++, normalmente necessárias na programação de jogos, como entrada do teclado, manipulação de gráficos, manipulação de sons e cronômetros (timer).

É uma plataforma transversal e trabalha com muitos compiladores diferentes. Desenvolvido originalmente por Shawn Hargreaves, é agora um projeto com contribuições do mundo inteiro.


Algumas características chaves incluem:

Facilidade de utilização - Vem com documentação e exemplos detalhados.

Portátil - Se a funcionalidade interna não for bastante, há muitos add-ons disponíveis em todas plataformas - sem mudar uma única linha do código, você pode criar versões para Windows, OS X, Linux, DOS e outros! Trabalhe com muitos compiladores, incluindo DJGPP e VC++ Fonte aberta - qualquer um pode contribuir, inclusive você!

Livre - não lhe custará uma moeda de dez centavos, e não há nenhuma limitação em seu uso.

Para mais informações referente a biblioteca allegro visite o site:
http://www.allegro.cc

O objetivo de Allegro.cc é fornecer uma riqueza da informação moderna que pertence à programação e ao gaming Allegro. Eles confiam pesadamente na participação dos colaboradores Allegro e do público geral. Nesse mesmo site existem publicações de vários jogos, quase todos são freewares e sharewares.

Antes de instalar qualquer jogo o Allegro recomenda ler a documentação completa de cada um porque eles não serão responsáveis por qualquer problema que ocorrer após a instalação.

VOCÊ PRECISA SABER...

Em outras palavras Allegro é uma biblioteca desenvolvida para ajudar os programadores iniciantes no desenvolvimento de jogos sem que seja necessário ler toneladas de livros referentes o assunto.

Basicamente, para que você possa desenvolver um jogo simples e divertido é necessário ter um bom conhecimento de qualquer linguagem de programação, criatividade e um bom conhecimento em bibliotecas gráficas como Allegro, Open GL, Direct x entre outros.



ENTENDO O LAÇO PRINCIPAL DO JOGO

Logo acima vimos que a biblioteca Allegro parece ser uma ferramenta com várias funcionalidades no processo de desenvolvimento de um jogo. Só o fato de não precisarmos ler toneladas de livros sobre matemática, física e APIs já poupa um tempo muito precioso.

Isso não quer dizer que para desenvolver um jogo comercial de sucesso basta aprender Allegro.

O conhecimento vai muito mais além da simplicidade. De qualquer forma você vai precisar estudar muito para desenvolver um jogo bom.

Vamos começar pelo inicio do inicio, entendendo o laço principal e utilizando a biblioteca Allegro para chamar as funções. O código abaixo já é um bom começo:

Ao executar o programa você vai ver apenas uma tela do windows com a cor de fundo em preto.
Para fechar o programa pressione ESC.


CÓDIGO

//Exemplo de código em Allegro
#include <allegro.h>

int main()
{
   allegro_init();
   install_keyboard();
   set_color_depth(16);
   set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 );

   // Laço principal
   while( !key[KEY_ESC] )
   {
      //Código
   }

   allegro_exit();
   return 0;

}
END_OF_MAIN();


FIM DE CÓDIGO...



#include <allegro.h>
Esse comando é o mais importante. Sem declarar essa linha não vamos conseguir usar nenhuma função da biblioteca Allegro. Ao chamar as funcões do Allegro e tentar compilar o jogo sem essa linha o compilador irá apresentar uma mensagem de erro dizendo que não conseguiu encontrar as funções.

VOCÊ PRECISA SABER...

Esse comando indica ao compilador onde ele deve encontrar as funções do allegro.




int allegro_init();
Macro responsável por iniciar a biblioteca allegro.
Sem esse comando não conseguimos utilizar nenhuma função do allegro.

Existem pessoas que utilizam a função allegro_exit(), mas o manual do allegro 4.2.1 informa que esse comando não precisa ser usado explicitamente. O allegro chama essa função toda vez que o jogo é fechado. Dessa forma o processo de liberação das bibliotecas da memória tornam-se automáticos.


int install_keyboard();
Esse comando é responsável por instalar e tornar as interrupções do teclado disponíveis para o nosso projeto.

Mais adiante vamos ver um topico de como manipular as interrupções do teclado.


void set_color_depth(int depth);
Essa função seta a profundidade das cores de todas as imagens que você vai carregar durante o projeto. O allegro suporta:

8 bits 256 cores
16 bits 65.536 mil
24 bits 16,7 milhões
32 bits 16,7 milhões

Exemplo: set_color_depth(32);

O modo 32 bits proporciona o mesmo número de cores que o modo 24 bits, mas gráficos de 32 bits podem ser manipulados muito mais rapidamente do que gráficos de 24 bits. Além disso, gráficos de 32 bits requerem cerca de 25% a mais de memória.

int set_gfx_mode(int card, int w, int h, int v_w, int v_h);
O comando acima é responsável por detectar a placa de vídeo, setar o tamanho da tela em pixel e o posicionamento inicial x,y.

Para saber o que utilizar no argumento card segue uma tabela abaixo explicando cada opção:

Card Descrição
GFX_TEXT
Fecha toda a modalidade de gráficos aberta previamente com set_gfx_mode.
GFX_AUTODETECT
O allegro escolhe o drive mais apropriado.
GFX_AUTODETECT_FULLSCREEN
Força o allegro a exibir o projeto em tela cheia.
GFX_AUTODETECT_WINDOWED
Força o allegro a exibir o projeto em uma janela.
GFX_SAFE
Modo especial para quando você quiser ajustar confiantemente uma modalidade de gráficos e não quer se importar a resolução.
GFX_BWINDOWSCREEN_ACCEL
Modalidade exclusiva de Tela cheia. Suporta definições de pixels somente acima ou igual a 640x480.Suporta também aceleração de hardware.
GFX_BWINDOWSCREEN
Modalidade idêntica a anterior mas não suporta aceleração de hardware.
GFX_BDIRECTWINDOW
Modo gráfico rápido para utilização de janelas porque usa a classe BdirectWindow. Mas nem todas as placas de vídeos suportam.
GFX_BWINDOW
Modo normal de trabalho em janela utilizando a classe Bwindow. Esse modo é muito lento.
GFX_BWINDOW_OVERLAY
Modalidade de tela cheia usando BWindow como uma folha de prova BBitmap. Esta modalidade não é suportada por todos as placas de vídeos, a profundidade de cores sugeridas é 15, 16 e 32 bits.

Exemplo:

set_gfx_mode(GFX_AUTODETECT_WINDOWED,640, 480, 0, 0);

O exemplo acima define a tela do jogo como sendo auto detectável em modo janela do windows,
640x480 pixels de resolução a partir da posição x= 0 e y=0.

void vsync();
Espera para que um retrace vertical começa.

O retrace acontece quando o feixe de elétron em seu monitor alcançou o fundo da tela e está movendo para trás para o superior, e se apronta para uma outra varredura.

Durante este período curto o cartão dos gráficos não está emitindo nenhum dado ao monitor, assim você pode fazer-lhe as coisas que não são possíveis em outras vezes, tais como alterar o palette de cores sem causar cintilar (neve).

O Allegro esperará automaticamente um retrace antes de alterar o palette ou de fazer algum desdobramento da ferragem, embora, assim que você não necessita normalmente se incomodar com esta função.

Essa explicação é muito importante porque o uso do comando vsync no meio do projeto causa uma perda considerável de desempenho.

while (!key[KEY_ESC]) {}
O comando acima trata-se do loop principal do jogo. Ele quer dizer que fará o loop enquanto ninguém pressionar a tecla ESC.

Dessa forma ele executa o código do jogo em velocidade de processamento.
Mais adiante veremos tópicos relacionados ao timer para controlar o loop do jogo.



Caro leitor, chegamos ao fim do entendimento do laço principal de um jogo.

Se você Encontrou alguma dificuldade no entendimento desse artigo favor entrar em contato.
Agora se prepare porque com essa tela preta dá pra fazer muita coisa!!!

Abraço - BDJogos




Contribuidor
Bruno A. Rovela
07/06/2007

Voltar

 
 

01/06/2007 (C) Copyright. Todos os Direitos Reservados. Leia a política de privacidade do portal.
É proibida a cópia de conteúdo deste site de acordo com a Lei Brasileira de Direitos Autorais.