Visão Geral e Introdução à Biblioteca Allegro para Programação de Jogos Autor: Pedro Demasi E-mail: demasi@ufrj.br
Instalando o Allegro <ul><li>http://www.talula.demon.co.uk/allegro/ (há link para um mirror em Português). </li></ul><ul><...
Passos Básicos <ul><li>Todo programa deve ser compilado com a opção -lalleg.  </li></ul><ul><li>Exemplo: gcc prog.c -o pro...
Configurações Iniciais <ul><li>Deve sempre aparecer uma chamada à função  allegro_init()  o mais perto possível do início ...
Configurando o Som <ul><li>Iniciando usando a função  install_sound : </li></ul>if(install_sound(DIGI_AUTODETECT,MIDI_AUTO...
Configurando o Modo Gráfico <ul><li>Iniciando usando a função  set_gfx_mode : </li></ul>#define MAX_X 640 #define MAX_Y 48...
Configurando o Modo Gráfico <ul><li>Definindo o número de cores usando a função  set_color_depth : </li></ul>set_color_dep...
Esqueleto de Programa #include <stdlib.h> #include <allegro.h> #define MAX_X 640 #define MAX_Y 480 int inicia(void) { alle...
Usando o Som <ul><li>Som digital: WAV ou VOC. Música: MID. </li></ul><ul><li>Antes de se tocar um som digital ou música de...
Usando o Som <ul><li>Para tocar uma música usa-se a função  play_midi . O primeiro parâmetro é o arquivo MIDI carregado, o...
Usando o Som <ul><li>Para tocar um som digital usa-se a função  play_sample . Os cinco parâmetros indicam: arquivo carrega...
Usando o Teclado <ul><li>A função  clear_keybuf()  esvazia o buffer de teclado. </li></ul><ul><li>A função  keypressed()  ...
Usando o Teclado <ul><li>O vetor  key[]  vai de 0 a 127. Mas existem constantes definidas para auxiliar a verificar a tecl...
Usando o Teclado <ul><li>A função  readkey()  retorna a próxima tecla do buffer de teclado ou, se este estiver vazio, espe...
Usando o Teclado <ul><li>Exemplos de uso de teclado: </li></ul>/* Esvazia o buffer */ clear_keybuf(); /* fica em loop até ...
Usando o Vídeo - Bitmaps <ul><li>Um bitmap nada mais é do que uma matriz de pontos, em que cada valor indica uma cor. </li...
Usando o Vídeo - Primitivas <ul><li>A função  clear_to_color  colore um bitmap completamente com a cor especificada. </li>...
Usando o Vídeo - Texto <ul><li>Função  text_mode  indica qual cor vai ser usada como fundo da fonte. Se o valor for negati...
Usando o Vídeo - Paleta <ul><li>Paleta só se usa nos modos de cores de 8 bits (256 cores). </li></ul><ul><li>A paleta é um...
Usando o Vídeo - Imagens <ul><li>Formatos de imagem: PCX e BMP. </li></ul><ul><li>Antes de se mostrar uma imagem deve-se c...
Usando o Vídeo - Imagens <ul><li>Para usar a paleta lida do arquivo como a atual, basta usar a função  set_palette , passa...
Usando o Vídeo - Imagens <ul><li>A função  draw_sprite  desenha usando a cor 0 como transparente (no modo 8 bits) ou rosa ...
Usando o Vídeo - Animação <ul><li>Usar toda hora o  screen  traz problemas. </li></ul><ul><li>Doubble Buffering (Buffer Du...
Usando o Mouse <ul><li>Usa-se a função  show_mouse  para que o cursor do mouse seja mostrado no bitmap especificado. Passa...
Usando o Mouse <ul><li>As variáveis  mouse_x  e  mouse_y  contêm a posição do cursor do mouse na tela. </li></ul><ul><li>A...
Tópicos Adicionais & Avançados <ul><li>Outras funções sobre os tópicos abordados. </li></ul><ul><li>Timers (temporizadores...
Como Obter Mais Ajuda <ul><li>Arquivos de documentação do Allegro, principalmente  faq.txt  e  allegro.txt . </li></ul><ul...
Upcoming SlideShare
Loading in …5
×

Biblioteca Allegro

3,628 views

Published on

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,628
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
66
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Biblioteca Allegro

  1. 1. Visão Geral e Introdução à Biblioteca Allegro para Programação de Jogos Autor: Pedro Demasi E-mail: demasi@ufrj.br
  2. 2. Instalando o Allegro <ul><li>http://www.talula.demon.co.uk/allegro/ (há link para um mirror em Português). </li></ul><ul><li>Criar um diretório (c:djgppallegro) e descompactar (matendo estrutura). </li></ul><ul><li>Rodar o make (pode demorar bastante). </li></ul><ul><li>Verificar se c:djgppallegroallegro.h está também em c:djgppinclude e se c:djgppallegrolibdjgppliballeg.a está em c:djgpplib (se não estiverem, copiar manualmente). </li></ul>
  3. 3. Passos Básicos <ul><li>Todo programa deve ser compilado com a opção -lalleg. </li></ul><ul><li>Exemplo: gcc prog.c -o prog.exe -lalleg </li></ul><ul><li>Incluir diretiva #include <allegro.h> , sempre depois de todos os includes das bibliotecas padrão (stdlib, stdio etc.) </li></ul><ul><li>No RHIDE: menu Options/Libraries, escrever alleg no primeiro espaço vazio e selecionar a caixa ao lado. </li></ul>
  4. 4. Configurações Iniciais <ul><li>Deve sempre aparecer uma chamada à função allegro_init() o mais perto possível do início do programa. </li></ul><ul><li>Da mesma forma devem ser chamadas, a seguir, as funções install_keyboard() , install_mouse() e install_timer() . Nota: as funções normais do C para teclado não irão mais funcionar. </li></ul><ul><li>A função allegro_exit() deve ser chamada no final do programa. </li></ul>
  5. 5. Configurando o Som <ul><li>Iniciando usando a função install_sound : </li></ul>if(install_sound(DIGI_AUTODETECT,MIDI_AUTODETECT,NULL) < 0) { /* Mensagem de Erro */ } <ul><li>Acertando o volume usando a função set_volume : </li></ul>set_volume(255,255); /* som digital e música; 0 a 255 */
  6. 6. Configurando o Modo Gráfico <ul><li>Iniciando usando a função set_gfx_mode : </li></ul>#define MAX_X 640 #define MAX_Y 480 (...) if(set_gfx_mode(GFX_AUTODETECT,MAX_X,MAX_Y,0,0) < 0) { /* Mensagem de Erro */ } <ul><li>MAX_X e MAX_Y indicam a resolução a ser usada. Neste exemplo, 640x480. </li></ul>
  7. 7. Configurando o Modo Gráfico <ul><li>Definindo o número de cores usando a função set_color_depth : </li></ul>set_color_depth(8); /* 256 cores */ set_color_depth(16); /* 65536 cores */ set_color_depth(24); /* 32 milhões de cores */ set_color_depth(32); /* 4 bilhões de cores */ <ul><li>O número indica a quantidade de bits. </li></ul><ul><li>A chamada a essa função deve ser feita antes da chamada à função set_gfx_mode . </li></ul><ul><li>O default é 8 (ou seja, 256 cores). </li></ul>
  8. 8. 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(&quot;Erro ao tentar iniciar placa de som! &quot;); return(FALSE); } set_volume(255,255); set_color_depth(8); if (set_gfx_mode(GFX_AUTODETECT,MAX_X,MAX_Y,0,0) < 0) { printf(&quot;Erro ao tentar iniciar modo de video! &quot;); return(FALSE); } return(TRUE); } void main(void) { if (!inicia()) exit(-1); /* continua o programa */ allegro_exit(); }
  9. 9. Usando o Som <ul><li>Som digital: WAV ou VOC. Música: MID. </li></ul><ul><li>Antes de se tocar um som digital ou música deve-se carregá-los da seguinte forma: </li></ul>/* declaração das variáveis que guardarão sons e músicas */ SAMPLE *som1,*som2; /* SAMPLE = arquivos de som digital */ MIDI *musica; /* MIDI = arquivos de música */ /* carrega os arquivos usando-se as respectivas funções */ som1 = load_wav(“arquivo.wav”); /* para arquivos wav */ som2 = load_voc(“arquivo.voc”); /* para arquivos voc */ musica = load_midi(“arquivo.mid”); /* para arquivos mid */ <ul><li>Ponteiro nulo -> arquivo não encontrado. </li></ul>
  10. 10. Usando o Som <ul><li>Para tocar uma música usa-se a função play_midi . O primeiro parâmetro é o arquivo MIDI carregado, o segundo indica se ele tocará em loop ou não. </li></ul>/* Exemplo para tocar um arquivo MIDI */ MIDI *musica; /* declaração da variável a ser usada */ musica = load_midi(“musica.mid”); /* carrega arquivo */ play_midi(musica,TRUE); /* toca a música em loop */ <ul><li>Para parar de tocar uma música usa-se a função stop_mid() . </li></ul>
  11. 11. Usando o Som <ul><li>Para tocar um som digital usa-se a função play_sample . Os cinco parâmetros indicam: arquivo carregado, volume (0 a 255), equilíbrio entre as caixas (0 a 255, 128 é meio a meio), freqüência (1000 usa a freqüência original, 500 usa a metade da freqüência original etc.) e se vai ser tocado em loop (função stop_sample() pára de tocar). </li></ul>/* Exemplo para tocar um arquivo de som WAV */ SAMPLE *som; /* declaração da variável a ser usada */ som = load_wav(“som.wav”); /* carrega arquivo */ play_midi(musica,255,128,1000,FALSE); /* toca som */
  12. 12. Usando o Teclado <ul><li>A função clear_keybuf() esvazia o buffer de teclado. </li></ul><ul><li>A função keypressed() retorna FALSE se o buffer de teclado estiver vazio (ou seja, nenhuma tecla pressionada) e TRUE caso contrário. Equivale à função kbhit() da biblioteca conio.h . </li></ul><ul><li>O vetor key[] contém o estado das teclas (TRUE se pressionadas). </li></ul>
  13. 13. Usando o Teclado <ul><li>O vetor key[] vai de 0 a 127. Mas existem constantes definidas para auxiliar a verificar a tecla desejada no formato KEY_TECLA . </li></ul><ul><li>Exemplos: key[KEY_ENTER], key[KEY_A], key[KEY_LEFT], key[KEY_ESC], key[KEY_P], key[KEY_B], key[KEY_SPACE] etc. </li></ul><ul><li>Exemplo: abortando um programa se a tecla ESC for pressionada: </li></ul>if (key[KEY_ESC]) allegro_exit();
  14. 14. Usando o Teclado <ul><li>A função readkey() retorna a próxima tecla do buffer de teclado ou, se este estiver vazio, espera que uma seja pressionada e a retorna. </li></ul><ul><li>2 bytes, o primeiro contém o scan code, o segundo contém o código ASCII. </li></ul><ul><li>Para se obter apenas o código ASCII: </li></ul>/* equivalente a ch = getch(); usando conio.h */ ch = readkey() & 0xFF;
  15. 15. Usando o Teclado <ul><li>Exemplos de uso de teclado: </li></ul>/* Esvazia o buffer */ clear_keybuf(); /* fica em loop até que uma tecla seja pressionada */ while (!keypressed()); /* fica em loop até a tecla ENTER ser pressionada */ while (!key[KEY_ENTER]); /* aguarda uma tecla e verifica se foi “s” */ tecla = readkey() & 0xFF; if (tecla == ‘S’ || tecla == ‘s’) exit(0);
  16. 16. Usando o Vídeo - Bitmaps <ul><li>Um bitmap nada mais é do que uma matriz de pontos, em que cada valor indica uma cor. </li></ul><ul><li>Esses valores podem indicar a cor em si ou uma entrada numa outra matriz de cores (no caso, por exemplo, dos modos em 8 bits). </li></ul><ul><li>O desenho no Allegro sempre é feito em bitmaps. O vídeo, inclusive, é considerado um (declarado como BITMAP *screen ); </li></ul>
  17. 17. Usando o Vídeo - Primitivas <ul><li>A função clear_to_color colore um bitmap completamente com a cor especificada. </li></ul><ul><li>A função putpixel desenha um ponto num bitmap na posição e com a cor especificadas. </li></ul><ul><li>Exemplos: </li></ul>clear_to_color(screen,4); /* cor 4, em geral, vermelho */ putpixel(screen,234,123,0); /* cor 0, em geral, preto */ <ul><li>Outras primitivas: vline , hline , line , triangle , rect , rectfill , circle , circlefill . </li></ul>
  18. 18. Usando o Vídeo - Texto <ul><li>Função text_mode indica qual cor vai ser usada como fundo da fonte. Se o valor for negativo, o fundo passa a ser transparente. </li></ul><ul><li>Função textout imprime uma string. Seus parâmetros são o bitmap destino, a fonte a ser usada, a posição (x,y) e a cor da fonte. </li></ul><ul><li>Fonte padrão: fonte (declarada FONT *font ). </li></ul><ul><li>Exemplo: </li></ul>text_mode(-1); textout(screen,font,”Testando texto...”,200,200,0);
  19. 19. Usando o Vídeo - Paleta <ul><li>Paleta só se usa nos modos de cores de 8 bits (256 cores). </li></ul><ul><li>A paleta é uma matriz de 256 posições. Cada posição representa uma cor. Cada posição possui 3 bytes, cada um indicando a quantidade de vermelho, verde e azul daquela cor. </li></ul><ul><li>Cor x indica que a cor a ser usada é a que está na paleta na posição x. </li></ul>
  20. 20. Usando o Vídeo - Imagens <ul><li>Formatos de imagem: PCX e BMP. </li></ul><ul><li>Antes de se mostrar uma imagem deve-se carregá-la da seguinte forma: </li></ul>/* declaração das variáveis que guardarão imagens */ BITMAP *img1,*img2; /* arquivos de BITMAP */ PALETTE pal1,pal2; /* paletas */ /* carrega os arquivos usando-se as respectivas funções */ img1 = load_pcx(“img.pcx”,pal1); /* para arquivos pcx */ img2 = load_bmp(“img.bmp”,pal2); /* para arquivos bmp */ <ul><li>Ponteiro nulo -> arquivo não encontrado. </li></ul>
  21. 21. Usando o Vídeo - Imagens <ul><li>Para usar a paleta lida do arquivo como a atual, basta usar a função set_palette , passando a paleta lida como parâmetro. </li></ul><ul><li>Depois de carregada, a imagem pode ser mostrada usando-se a função draw_sprite . Seus parâmetros são: bitmap destino, bitmap da imagem posição (x,y). </li></ul>BITMAP *img; PALETTE pal; img = load_pcx(“img.pcx”,pal); set_palette(pal); draw_sprite(screen,img,100,100);
  22. 22. Usando o Vídeo - Imagens <ul><li>A função draw_sprite desenha usando a cor 0 como transparente (no modo 8 bits) ou rosa claro nos outros modos. </li></ul><ul><li>A função blit é parecida com a draw_sprite , a diferença (prática) é que ela não usa cor de transparência e, por isso, desenha a imagem carregada exatamente como ela é. </li></ul><ul><li>Parâmetros: imagem fonte, bitmap destino, posição (x,y) da fonte, posição (x,y) do destino, largura e altura. </li></ul>
  23. 23. Usando o Vídeo - Animação <ul><li>Usar toda hora o screen traz problemas. </li></ul><ul><li>Doubble Buffering (Buffer Duplo): desenha-se sempre num buffer secundário na memória. No fim de cada iteração da animação, copia-se tudo para a tela. </li></ul><ul><li>Declarando, alocando e destruindo um buffer de bitmap num programa: </li></ul>BITMAP *tela; /* declaração da variável */ tela = create_bitmap(MAX_X,MAX_Y); /* alocando espaço */ destroy_bitmap(tela); /* destruindo, no fim do programa */
  24. 24. Usando o Mouse <ul><li>Usa-se a função show_mouse para que o cursor do mouse seja mostrado no bitmap especificado. Passando NULL como parâmetro esconde o cursor do mouse. </li></ul><ul><li>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. </li></ul>show_mouse(screen); /* mostra o mouse na tela */ show_mouse(NULL); /* esconde o mouse */
  25. 25. Usando o Mouse <ul><li>As variáveis mouse_x e mouse_y contêm a posição do cursor do mouse na tela. </li></ul><ul><li>A variável mouse_b contém o estado dos botões. </li></ul><ul><li>(mouse_b & 1) é verdadeiro se o botão esquerdo estiver pressionado. </li></ul><ul><li>(mouse_b & 2) é verdadeiro se o botão direito estiver pressionado. </li></ul>
  26. 26. Tópicos Adicionais & Avançados <ul><li>Outras funções sobre os tópicos abordados. </li></ul><ul><li>Timers (temporizadores). </li></ul><ul><li>Data Files (arquivos de dados). </li></ul><ul><li>Joystick. </li></ul><ul><li>Arquivos de configuração. </li></ul><ul><li>Funções Gráficas 3D. </li></ul>
  27. 27. Como Obter Mais Ajuda <ul><li>Arquivos de documentação do Allegro, principalmente faq.txt e allegro.txt . </li></ul><ul><li>Links na própria página do Allegro. </li></ul><ul><li>Demo do Allegro (allegrodemo). </li></ul><ul><li>Exemplos do Allegro (allegroexamples). </li></ul><ul><li>Newsgroups e listas de discussão. </li></ul><ul><li>Vários programas já desenvolvidos usando o Allegro fornecidos com o código fonte. </li></ul>

×