Allegro Para Iniciantes

  • View
    387

  • Download
    1

Embed Size (px)

Text of Allegro Para Iniciantes

Allegro para Iniciantes

Tutorial de Allegro com C++ utilizando o BloodShed DevC++ Por: Thiago "weissengeist" | [email protected] Colaboradores: rodrigozk | [email protected] gamemasterbr | [email protected]

Objetivo: O objetivo deste tutorial contribuir para que interessados em desenvolvimento de jogos possam iniciar seus estudos de maneira objetiva. Este tutorial apresenta os conceitos bsicos de programao grfica 2D, voltada para jogos. Por sua simplicidade, o Allegro o ponto de partida para iniciao programao de jogos, mas bom ressaltar que jogos comerciais so desenvolvidos com API's mais avanadas que oferecem muitos outros recursos. Para o desenvolvimento de um jogo, por mais simples que seja, necessrio muito estudo e dedicao. Este tutorial no ensina a criar jogos, mas provavelmente vai dar uma boa noo do funcionamento de funes comuns em muitas das bibliotecas grficas recomendadas para o desenvolvimento. Ao final deste estudo, o leitor dever ser capaz de: Instalar corretamente o Allego no DevC++; Entender a sintaxe e utilizao das funes da biblioteca allegro.h; Carregar Bitmaps e Textos na tela; Desenhar e pintar formas geomtricas primitivas; Mover Bitmaps com o Teclado; Detectar Coliso de Bitmaps; Utilizao de Timer, Mouse e Som.

Requerimentos: Compilador BloodShed DevC++ com MinGW/GCC: Link [7,6 MB] (voc pode utilizar outro de sua preferncia, porm estaremos dando nfase ao BloodShed DevC++) Pacote DevPak do Allegro: Link [1,86 MB] (voc pode fazer a instalao manualmente baixando os pacotes seguindo seus procedimentos, porm neste turorial ser abordada a maneira mais fcil) Conhecimento bsico da linguagem C ou C++. Voc pode obter apostilas e Tutoriais de C++ gratuitamente no site da UniDev: Link [N/A] ( importante obter conhecimento razovel programao antes de se aventurar com alguma bibliotca grfica, porm, possvel acomapanhar este tutorial durante o aprendizado da linguagem) Instalao: Iniciando nosso estudo, vamos instalar o DevC++ e o pacote do Allegro. Depois iremos testar um cdigo padro para verificar se a instalao foi feita corretamente. - Clique duas vezes no programa de instalao do BloodShed DevC++ e faa a instalao;

- Clique duas vezes no pacote do Allegro e faa a instalao utilizando o Packman*; (* Packman o gerenciador de pacotes de atualizao do DevC++, apenas um assistente de instalao).

- Se voc preferir, pode instalar o pacote do Allegro pelo prprio DevC++, para isso, clique no menu Ferramentas e escolha Package Manager:

(Essa opo ir abrir um assistente de instalaes de pacotes do DevC++) - Clique no boto Install e selecione o caminho onde voc salvou o pacote de instalao do Allegro:

- Siga todo o processo de instalao:

(DevC++ Package Installation Wizard) - Agora, certifique-se de que o Allegro foi instalado com sucesso. Crie um Novo Projeto no DevC++, Selecione a aba MultiMedia, e clique em Allegro Application(static):

(Selecione o tipo de aplicao na aba MultiMedia, nomeie o Projeto e clique em OK) Aps selecionar o Tipo de projeto e nome-lo, clique em Ok. O programa pedir que voc salve o projeto. Considere criar uma pasta com o nome do projeto onde voc ir salvar todos os arquivos fonte e classas do programa, assim como imagens e sons. Neste projeto no iremos gerar tantos arquivos, pois apenas um projeto teste para verificar se o pacote foi instalado corretamente. Ento escolha um diretrio, salve o projeto e o arquivo main.cpp. Agora pressione F9 ou clique no boto Compilar & Executar. O cdigo padro ser compilado e executado pelo DevC++ e se tudo estiver correto, seu programa no apresentar erros nem warnings, e uma janela vazia ser mostrada:

(Janala vazia gerada pelo cdigo padro da aplicao Allegro) - Utilize a tecla ESC para fechar a janela.

- Apenas a ttulo de conhecimento, veja o cdigo gerado com comentrios:#include /* Adiciona as funes do Allegro */ /* As 2 linhas seguintes so chamadas de funes por prototipao */ void init(); void deinit(); int main() { /* Essa linha vai iniciar o programa assim como em C/C++ */ init(); /* Essa linha chama a funo que inicializa as opes de vdeo*/ while (!key[KEY_ESC]) { /* enquanto a tecla pressionada for diferente de ESC a janela continua ativa*/ /* put your code here (adicionaremos nosso cdigo aqui)*/ } deinit(); /* funo para limpar o buffer */ return 0 ; /* Finaliza o Programa sem erros*/ } END_OF_MAIN(); /* Este o comando utilizado para finalizar a funo main() */ void init() { /* declarao da funo*/ int depth, res; /* variveis da funo*/ allegro_init(); /* chama funo do allegro */ depth = desktop_color_depth(); /* Atribuio de valor tirado de funo*/ if (depth == 0 ) depth = 32 ; /* verifica valor, caso ele seja zero, a varivel receve um valor pr-estipulado*/ set_color_depth(depth); /* funo de utilizao de cores, recebe valor pr-estabelecido */ res = set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640 , 480 , 0 , 0 ); /* Detecta placa de vdeo e define resoluo(640x480) */ if (res != 0 ) { /* so res for diferente de zero, por que houve erro */ allegro_message(allegro_error); /* ento exibida uma mensagem de erro gerada pela funo */ exit( -1 ); /* sai do programa informando erro */ } /* as 3 linhas a seguir, so funoes para tempo, utilizao de teclado e mouse */ install_timer(); install_keyboard(); install_mouse(); /* add other initializations here (se for necessrio, tem como adicionar outros tipos) */ } void deinit() { /* a funo que foi prototipada acima */ clear_keybuf(); /* funo para limpar o buffer do teclado */ /* add other initializations here (se for necessrio, tem como adicionar outros tipos) */ }

(Cdigo de main.cpp do projeto de exemplo com comentrios) Pronto, agora podemos comear com exemplos de utilizao do Allegro. A Sintaxe da Biblioteca: Vamos agora entender os principais comandos do Allegro. Estudaremos as funes de inicializao da biblioteca, da placa de vdeo e do teclado. Veremos tambm a funo END_OF_MAIN(), que a funo necessria para indicar o fim de main. Para um estudo deste assunto iremos escrever um cdigo totalmente novo. Ento apague todo o contedo do arquivo main.cpp, do projeto que voc acabou de criar, e siga as instrues a seguir. - Vamos carregar prottipos e as difinies do Allegro, carregando o arquivo allegro.h: #include

- Como sabemos, ao declarar o arquivo de cabealho, teremos acesso s funes pr programadas que facilitam o desenvolvimento do cdigo. O arquivo includo foi allegro.h, que a biblioteca grfica a qual estamos estudando. - Vamos agora declarar a funo principal do nosso programa, a main(): #include int main() { } - Agora vamos fazer as definies e chamadas de funes importantes para a utilizao do Allegro. A primeira funo que devemos chamar allegro_init(), que inicializar as funes da biblioteca. Logo aps esta funo, devemos chamar uma funo para interpretar os comandos dos dispositivos de entrada, no nosso caso, a funo install_keyboard(), referente ao teclado, e se for necessrio, outros dispositivos de entrada, como por exemplo o mouse. A funo install_keyboard() interpreta os valores do teclado de forma diferente das funes de input padro de outras bibliotecas, como por exemplo, stdio.h entre outras. Mais definies da funo, sero abordadas no tpico referente a movimentao de bitmaps com o teclado. Vejamos agora a utilizao das funes:#include int main() { allegro_init(); install_keyboard(); }

- O prximo passo, est relacionado s definies de video. Vamos definir atravz da utilizao da funo set_color_depth(), qual ser a profundidade de cores utilizada. Essa funo pode receber valores pr estabelecidos de 8, 15, 16, 24 e 32 cores. Este nmero, regido por RGB, ou seja, variao de tonalidade de 3 cores primrias que possibilitam a utilizao de outras cores. O significado de RGB na verdade Vermelho(Red), Verde(Green) e Azul(Blue), e utilizado como padro para preenchimento de cores em Bitmaps. Exemplo:

(A cr vermelha formada atravez da RGB [255,0,0] como mostra a imagem) - Na imagem acima, vemos o princpio da utilizao de RGB. Ao Vermelho foi atribuido o nmero mximo de tonalidade, enquanto ao Verde e Azul, no foi atribuido nenhum nmero. Como a tonalidade do Verde e Azul nula, o Vermelho no se mistura com nenhuma outra cor, permanacendo nesta tonalidade. - Voltando ao Allegro, o que temos que fazer, informar funo set_color_depth(), quantos bits de cores sero utilizados:

set_color_depth(32);

- A funo set_color_depth() deve ser utilizada sempre antes da funo set_gfx_mode(). Caso contrrio, as cores de algum Bitmap, no sero exibidas corretamente. - A prxima definio de vdeo a ser feita, a definio da placa de vdeo e de sua resoluo. Para isso utilizaremos a funo set_gfx_mode(), que tem como parmetro inicial a deteco do modo de vdeo, a definio da resoluo em que a aplicao ser exibida: set_gfx_mode(GFX_AUTODETECT, 640 , 480 , 0 , 0 );

- Na linha acima, vemos a funo sendo utilizada, com o parmetro de deteco automtica da placa de vdeo com uma resoluo 640x480. Os proximos campos, onde vemos dois zeros, so respectivamente a altura e largura virtuais da tela, ou seja, partes do mapa de um jogo que no aparecem no display. Estas reas virtuais so acessadas por meio de uma funo de scrowling, ou seja, rolamento de tela. Neste exemplo no utilizaremos a rea virtual, por isso no daremos importncia para ela agora. - Veremos agora alguns dos modos de vdeo possveis e suas descries: GFX_TEXT GFX_AUTODETECT GFX_VGA GFX_MODEX GFX_VESA1 GFX_VESA2B GFX_VESA2L GFX_VESA3 GFX_VBEAF GFX_XTENDED retorna para o modo texto faz com que o Allegro escolha o driver grfico mais apropriado (normalmente tem problemas com placas de vdeo mais recentes) modo VGA (320x200, 320x100, 160x120, 80x80) uma verso planar do modo VGA (tweaked) usa o driver VESA 1.x usa o driver VBE 2.0 em modo banked usa o driver VBE 2.0 com framebuffer linear usa o driver VBE 3.0 usa o acelerador de hardware API VBE/AF usa o driver 640x480 unchained