Your SlideShare is downloading. ×
  • Like
Biblioteca Allegro
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Biblioteca Allegro

  • 3,179 views
Published

 

Published in Technology , Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,179
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
59
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Visão Geral e Introdução à Biblioteca Allegro para Programação de Jogos Autor: Pedro Demasi E-mail: demasi@ufrj.br
  • 2. Instalando o Allegro
    • http://www.talula.demon.co.uk/allegro/ (há link para um mirror em Português).
    • Criar um diretório (c:djgppallegro) e descompactar (matendo estrutura).
    • Rodar o make (pode demorar bastante).
    • 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).
  • 3. Passos Básicos
    • Todo programa deve ser compilado com a opção -lalleg.
    • Exemplo: gcc prog.c -o prog.exe -lalleg
    • Incluir diretiva #include <allegro.h> , sempre depois de todos os includes das bibliotecas padrão (stdlib, stdio etc.)
    • No RHIDE: menu Options/Libraries, escrever alleg no primeiro espaço vazio e selecionar a caixa ao lado.
  • 4. Configurações Iniciais
    • Deve sempre aparecer uma chamada à função allegro_init() o mais perto possível do início do programa.
    • 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.
    • A função allegro_exit() deve ser chamada no final do programa.
  • 5. Configurando o Som
    • Iniciando usando a função install_sound :
    if(install_sound(DIGI_AUTODETECT,MIDI_AUTODETECT,NULL) < 0) { /* Mensagem de Erro */ }
    • Acertando o volume usando a função set_volume :
    set_volume(255,255); /* som digital e música; 0 a 255 */
  • 6. Configurando o Modo Gráfico
    • Iniciando usando a função set_gfx_mode :
    #define MAX_X 640 #define MAX_Y 480 (...) if(set_gfx_mode(GFX_AUTODETECT,MAX_X,MAX_Y,0,0) < 0) { /* Mensagem de Erro */ }
    • MAX_X e MAX_Y indicam a resolução a ser usada. Neste exemplo, 640x480.
  • 7. Configurando o Modo Gráfico
    • Definindo o número de cores usando a função set_color_depth :
    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 */
    • O número indica a quantidade de bits.
    • A chamada a essa função deve ser feita antes da chamada à função set_gfx_mode .
    • O default é 8 (ou seja, 256 cores).
  • 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. Usando o Som
    • Som digital: WAV ou VOC. Música: MID.
    • Antes de se tocar um som digital ou música deve-se carregá-los da seguinte forma:
    /* 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 */
    • Ponteiro nulo -> arquivo não encontrado.
  • 10. Usando o Som
    • 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.
    /* 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 */
    • Para parar de tocar uma música usa-se a função stop_mid() .
  • 11. Usando o Som
    • 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).
    /* 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. Usando o Teclado
    • A função clear_keybuf() esvazia o buffer de teclado.
    • 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 .
    • O vetor key[] contém o estado das teclas (TRUE se pressionadas).
  • 13. 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();
  • 14. Usando o Teclado
    • 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.
    • 2 bytes, o primeiro contém o scan code, o segundo contém o código ASCII.
    • Para se obter apenas o código ASCII:
    /* equivalente a ch = getch(); usando conio.h */ ch = readkey() & 0xFF;
  • 15. Usando o Teclado
    • Exemplos de uso de teclado:
    /* 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. Usando o Vídeo - Bitmaps
    • Um bitmap nada mais é do que uma matriz de pontos, em que cada valor indica uma cor.
    • 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).
    • O desenho no Allegro sempre é feito em bitmaps. O vídeo, inclusive, é considerado um (declarado como BITMAP *screen );
  • 17. Usando o Vídeo - Primitivas
    • A função clear_to_color colore um bitmap completamente com a cor especificada.
    • A função putpixel desenha um ponto num bitmap na posição e com a cor especificadas.
    • Exemplos:
    clear_to_color(screen,4); /* cor 4, em geral, vermelho */ putpixel(screen,234,123,0); /* cor 0, em geral, preto */
    • Outras primitivas: vline , hline , line , triangle , rect , rectfill , circle , circlefill .
  • 18. Usando o Vídeo - Texto
    • 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.
    • 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.
    • Fonte padrão: fonte (declarada FONT *font ).
    • Exemplo:
    text_mode(-1); textout(screen,font,”Testando texto...”,200,200,0);
  • 19. Usando o Vídeo - Paleta
    • Paleta só se usa nos modos de cores de 8 bits (256 cores).
    • 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.
    • Cor x indica que a cor a ser usada é a que está na paleta na posição x.
  • 20. Usando o Vídeo - Imagens
    • Formatos de imagem: PCX e BMP.
    • Antes de se mostrar uma imagem deve-se carregá-la da seguinte forma:
    /* 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 */
    • Ponteiro nulo -> arquivo não encontrado.
  • 21. Usando o Vídeo - Imagens
    • Para usar a paleta lida do arquivo como a atual, basta usar a função set_palette , passando a paleta lida como parâmetro.
    • 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).
    BITMAP *img; PALETTE pal; img = load_pcx(“img.pcx”,pal); set_palette(pal); draw_sprite(screen,img,100,100);
  • 22. Usando o Vídeo - Imagens
    • A função draw_sprite desenha usando a cor 0 como transparente (no modo 8 bits) ou rosa claro nos outros modos.
    • 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 é.
    • Parâmetros: imagem fonte, bitmap destino, posição (x,y) da fonte, posição (x,y) do destino, largura e altura.
  • 23. Usando o Vídeo - Animação
    • Usar toda hora o screen traz problemas.
    • 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.
    • Declarando, alocando e destruindo um buffer de bitmap num programa:
    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. Usando o Mouse
    • 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.
    • 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.
    show_mouse(screen); /* mostra o mouse na tela */ show_mouse(NULL); /* esconde o mouse */
  • 25. Usando o Mouse
    • As variáveis mouse_x e mouse_y contêm a posição do cursor do mouse na tela.
    • A variável mouse_b contém o estado dos botões.
    • (mouse_b & 1) é verdadeiro se o botão esquerdo estiver pressionado.
    • (mouse_b & 2) é verdadeiro se o botão direito estiver pressionado.
  • 26. Tópicos Adicionais & Avançados
    • Outras funções sobre os tópicos abordados.
    • Timers (temporizadores).
    • Data Files (arquivos de dados).
    • Joystick.
    • Arquivos de configuração.
    • Funções Gráficas 3D.
  • 27. Como Obter Mais Ajuda
    • Arquivos de documentação do Allegro, principalmente faq.txt e allegro.txt .
    • Links na própria página do Allegro.
    • Demo do Allegro (allegrodemo).
    • Exemplos do Allegro (allegroexamples).
    • Newsgroups e listas de discussão.
    • Vários programas já desenvolvidos usando o Allegro fornecidos com o código fonte.