A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Visão Geral e Introdução à Biblioteca Allegro para Programação de Jogos Autor: Pedro Demasi

Apresentações semelhantes


Apresentação em tema: "Visão Geral e Introdução à Biblioteca Allegro para Programação de Jogos Autor: Pedro Demasi"— Transcrição da apresentação:

1 Visão Geral e Introdução à Biblioteca Allegro para Programação de Jogos Autor: Pedro Demasi

2 Instalando o Allegro n (há link para um mirror em Português). n Criar um diretório (c:\djgpp\allegro) e descompactar (matendo estrutura). n Rodar o make (pode demorar bastante). n Verificar se c:\djgpp\allegro\allegro.h está também em c:\djgpp\include e se c:\djgpp\allegro\lib\djgpp\liballeg.a está em c:\djgpp\lib (se não estiverem, copiar manualmente).

3 Passos Básicos n Todo programa deve ser compilado com a opção -lalleg. n Exemplo: gcc prog.c -o prog.exe -lalleg n Incluir diretiva #include, sempre depois de todos os includes das bibliotecas padrão (stdlib, stdio etc.) n No RHIDE: menu Options/Libraries, escrever alleg no primeiro espaço vazio e selecionar a caixa ao lado.

4 Configurações Iniciais n Deve sempre aparecer uma chamada à função allegro_init() o mais perto possível do início do programa. n 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. n A função allegro_exit() deve ser chamada no final do programa.

5 Configurando o Som n Iniciando usando a função install_sound: if(install_sound(DIGI_AUTODETECT,MIDI_AUTODETECT,NULL) < 0) { /* Mensagem de Erro */ /* Mensagem de Erro */} n 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 n 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 */ /* Mensagem de Erro */} n MAX_X e MAX_Y indicam a resolução a ser usada. Neste exemplo, 640x480.

7 Configurando o Modo Gráfico n Definindo o número de cores usando a função set_color_depth: set_color_depth(8); /* 256 cores */ set_color_depth(16); /* cores */ set_color_depth(24); /* 32 milhões de cores */ set_color_depth(32); /* 4 bilhões de cores */ n O número indica a quantidade de bits. n A chamada a essa função deve ser feita antes da chamada à função set_gfx_mode. n O default é 8 (ou seja, 256 cores).

8 Esqueleto de Programa #include #include #define MAX_X 640 #define MAX_Y 480 int inicia(void) { allegro_init(); install_keyboard(); allegro_init(); install_keyboard(); install_mouse(); install_timer(); install_mouse(); install_timer(); if (install_sound(DIGI_AUTODETECT,MIDI_AUTODETECT,NULL) < 0) if (install_sound(DIGI_AUTODETECT,MIDI_AUTODETECT,NULL) < 0) { printf("Erro ao tentar iniciar placa de som!\n"); printf("Erro ao tentar iniciar placa de som!\n"); return(FALSE); return(FALSE); } set_volume(255,255); set_volume(255,255); set_color_depth(8); set_color_depth(8); if (set_gfx_mode(GFX_AUTODETECT,MAX_X,MAX_Y,0,0) < 0) if (set_gfx_mode(GFX_AUTODETECT,MAX_X,MAX_Y,0,0) < 0) { printf("Erro ao tentar iniciar modo de video!\n"); printf("Erro ao tentar iniciar modo de video!\n"); return(FALSE); return(FALSE); } return(TRUE); return(TRUE);} void main(void) { if (!inicia()) exit(-1); if (!inicia()) exit(-1); /* continua o programa */ /* continua o programa */ allegro_exit(); allegro_exit();}

9 Usando o Som n Som digital: WAV ou VOC. Música: MID. n 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 */ n Ponteiro nulo -> arquivo não encontrado.

10 Usando o Som n 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 */ n Para parar de tocar uma música usa-se a função stop_mid().

11 Usando o Som n 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 n A função clear_keybuf() esvazia o buffer de teclado. n 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. n O vetor key[] contém o estado das teclas (TRUE se pressionadas).

13 Usando o Teclado n O vetor key[] vai de 0 a 127. Mas existem constantes definidas para auxiliar a verificar a tecla desejada no formato KEY_TECLA. n Exemplos: key[KEY_ENTER], key[KEY_A], key[KEY_LEFT], key[KEY_ESC], key[KEY_P], key[KEY_B], key[KEY_SPACE] etc. n Exemplo: abortando um programa se a tecla ESC for pressionada: if (key[KEY_ESC]) allegro_exit();

14 Usando o Teclado n 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. n 2 bytes, o primeiro contém o scan code, o segundo contém o código ASCII. n Para se obter apenas o código ASCII: /* equivalente a ch = getch(); usando conio.h */ ch = readkey() & 0xFF;

15 Usando o Teclado n 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 n Um bitmap nada mais é do que uma matriz de pontos, em que cada valor indica uma cor. n 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). n O desenho no Allegro sempre é feito em bitmaps. O vídeo, inclusive, é considerado um (declarado como BITMAP *screen);

17 Usando o Vídeo - Primitivas n A função clear_to_color colore um bitmap completamente com a cor especificada. n A função putpixel desenha um ponto num bitmap na posição e com a cor especificadas. n Exemplos: clear_to_color(screen,4); /* cor 4, em geral, vermelho */ putpixel(screen,234,123,0); /* cor 0, em geral, preto */ n Outras primitivas: vline, hline, line, triangle, rect, rectfill, circle, circlefill.

18 Usando o Vídeo - Texto n 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. n 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. n Fonte padrão: fonte (declarada FONT *font). n Exemplo: text_mode(-1); textout(screen,font,Testando texto...,200,200,0);

19 Usando o Vídeo - Paleta n Paleta só se usa nos modos de cores de 8 bits (256 cores). n 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. n Cor x indica que a cor a ser usada é a que está na paleta na posição x.

20 Usando o Vídeo - Imagens n Formatos de imagem: PCX e BMP. n 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 */ n Ponteiro nulo -> arquivo não encontrado.

21 Usando o Vídeo - Imagens n Para usar a paleta lida do arquivo como a atual, basta usar a função set_palette, passando a paleta lida como parâmetro. n 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 n A função draw_sprite desenha usando a cor 0 como transparente (no modo 8 bits) ou rosa claro nos outros modos. n 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 é. n 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 n Usar toda hora o screen traz problemas. n 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. n 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 n 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. n 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 n As variáveis mouse_x e mouse_y contêm a posição do cursor do mouse na tela. n A variável mouse_b contém o estado dos botões. n (mouse_b & 1) é verdadeiro se o botão esquerdo estiver pressionado. n (mouse_b & 2) é verdadeiro se o botão direito estiver pressionado.

26 Tópicos Adicionais & Avançados n Outras funções sobre os tópicos abordados. n Timers (temporizadores). n Data Files (arquivos de dados). n Joystick. n Arquivos de configuração. n Funções Gráficas 3D.

27 Como Obter Mais Ajuda n Arquivos de documentação do Allegro, principalmente faq.txt e allegro.txt. n Links na própria página do Allegro. n Demo do Allegro (\allegro\demo). n Exemplos do Allegro (\allegro\examples). n Newsgroups e listas de discussão. n Vários programas já desenvolvidos usando o Allegro fornecidos com o código fonte.


Carregar ppt "Visão Geral e Introdução à Biblioteca Allegro para Programação de Jogos Autor: Pedro Demasi"

Apresentações semelhantes


Anúncios Google