Escolar Documentos
Profissional Documentos
Cultura Documentos
Instalando o Allegro
http://www.talula.demon.co.uk/allegro/ (h link para um mirror em Portugus). Criar um diretrio (c:\djgpp\allegro) e descompactar (matendo estrutura). Rodar o make (pode demorar bastante). Verificar se c:\djgpp\allegro\allegro.h est tambm em c:\djgpp\include e se c:\djgpp\allegro\lib\djgpp\liballeg.a est em c:\djgpp\lib (se no estiverem, copiar manualmente).
Passos Bsicos
Todo programa deve ser compilado com a opo -lalleg. Exemplo: gcc prog.c -o prog.exe -lalleg Incluir diretiva #include <allegro.h>, sempre depois de todos os includes das bibliotecas padro (stdlib, stdio etc.) No RHIDE: menu Options/Libraries, escrever alleg no primeiro espao vazio e selecionar a caixa ao lado.
Configuraes Iniciais
Deve sempre aparecer uma chamada funo allegro_init() o mais perto possvel do incio do programa. Da mesma forma devem ser chamadas, a seguir, as funes install_keyboard(), install_mouse() e install_timer(). Nota: as funes normais do C para teclado no iro mais funcionar. A funo allegro_exit() deve ser chamada no final do programa.
Configurando o Som
O nmero indica a quantidade de bits. A chamada a essa funo deve ser feita antes da chamada funo set_gfx_mode. O default 8 (ou seja, 256 cores).
Esqueleto de Programa
#include <stdlib.h> #include <allegro.h> #define MAX_X 640 #define MAX_Y 480
int inicia(void) { allegro_init(); install_keyboard(); install_mouse(); install_timer(); if (install_sound(DIGI_AUTODETECT,MIDI_AUTODETECT,NULL) < 0) { printf("Erro ao tentar iniciar placa de som!\n"); return(FALSE); } set_volume(255,255); set_color_depth(8); if (set_gfx_mode(GFX_AUTODETECT,MAX_X,MAX_Y,0,0) < 0) { printf("Erro ao tentar iniciar modo de video!\n"); return(FALSE); } return(TRUE); }
Usando o Som
Som digital: WAV ou VOC. Msica: MID. Antes de se tocar um som digital ou msica deve-se carreg-los da seguinte forma:
/* declarao das variveis que guardaro sons e msicas */ SAMPLE *som1,*som2; /* SAMPLE = arquivos de som digital */ MIDI *musica; /* MIDI = arquivos de msica */ /* carrega os arquivos usando-se as respectivas funes som1 = load_wav(arquivo.wav); /* para arquivos wav som2 = load_voc(arquivo.voc); /* para arquivos voc musica = load_midi(arquivo.mid); /* para arquivos mid */ */ */ */
Usando o Som
Para tocar uma msica usa-se a funo play_midi. O primeiro parmetro o arquivo MIDI carregado, o segundo indica se ele tocar em loop ou no.
/* Exemplo para tocar um arquivo MIDI */ MIDI *musica; /* declarao da varivel a ser usada */ musica = load_midi(musica.mid); /* carrega arquivo */ play_midi(musica,TRUE); /* toca a msica em loop */
Usando o Som
Para tocar um som digital usa-se a funo play_sample. Os cinco parmetros indicam: arquivo carregado, volume (0 a 255), equilbrio entre as caixas (0 a 255, 128 meio a meio), freqncia (1000 usa a freqncia original, 500 usa a metade da freqncia original etc.) e se vai ser tocado em loop (funo stop_sample() pra de tocar).
/* Exemplo para tocar um arquivo de som WAV */ SAMPLE *som; /* declarao da varivel a ser usada */ som = load_wav(som.wav); /* carrega arquivo */ play_midi(musica,255,128,1000,FALSE); /* toca som */
Usando o Teclado
A funo clear_keybuf() esvazia o buffer de teclado. A funo keypressed() retorna FALSE se o buffer de teclado estiver vazio (ou seja, nenhuma tecla pressionada) e TRUE caso contrrio. Equivale funo kbhit() da biblioteca conio.h. O vetor key[] contm o estado das teclas (TRUE se pressionadas).
Usando o Teclado
O vetor key[] vai de 0 a 127. Mas existem constantes definidas para auxiliar a verificar a tecla desejada no formato KEY_TECLA. Exemplos: key[KEY_ENTER], key[KEY_A], key[KEY_LEFT], key[KEY_ESC], key[KEY_P], key[KEY_B], key[KEY_SPACE] etc. Exemplo: abortando um programa se a tecla ESC for pressionada:
if (key[KEY_ESC]) allegro_exit();
Usando o Teclado
A funo readkey() retorna a prxima tecla do buffer de teclado ou, se este estiver vazio, espera que uma seja pressionada e a retorna. 2 bytes, o primeiro contm o scan code, o segundo contm o cdigo ASCII. Para se obter apenas o cdigo ASCII:
Usando o Teclado
Outras primitivas: vline, hline, line, triangle, rect, rectfill, circle, circlefill.
/* declarao das variveis que guardaro imagens */ BITMAP *img1,*img2; /* arquivos de BITMAP */ PALETTE pal1,pal2; /* paletas */
/* carrega os arquivos usando-se as respectivas funes */ img1 = load_pcx(img.pcx,pal1); /* para arquivos pcx */ img2 = load_bmp(img.bmp,pal2); /* para arquivos bmp */
BITMAP *tela; /* declarao da varivel */ tela = create_bitmap(MAX_X,MAX_Y); /* alocando espao */ destroy_bitmap(tela); /* destruindo, no fim do programa */
Usando o Mouse
Usa-se a funo show_mouse para que o cursor do mouse seja mostrado no bitmap especificado. Passando NULL como parmetro esconde o cursor do mouse. Deve-se ter cuidado ao desenhar algo na tela pois o cursor do mouse pode passar por cima e estragar o desenho, por isso sempre bom escond-lo antes de desenhar qualquer coisa.
Usando o Mouse
As variveis mouse_x e mouse_y contm a posio do cursor do mouse na tela. A varivel mouse_b contm o estado dos botes. (mouse_b & 1) verdadeiro se o boto esquerdo estiver pressionado. (mouse_b & 2) verdadeiro se o boto direito estiver pressionado.