II Workshop de Sistemas de Informação
Entendendo o conceito de Motor Biblioteca que oferece um conjunto de funções com o objetivo de agilizar o desenvolvimento de aplicações gráficas.
Biblioteca gratuita e portável destinada ao desenvolvimento de jogos e aplicações multimídia.
Ambiente de desenvolvimento integrado (IDE) gratuito destinado ao desenvolvimento de aplicações em C e C++.
Instalando Allegrono Dev-C++ Ferramentas -> Atualizações Selecionar o servidor Checkfor updates Groups-> Allegro Versão 4.4.2
Criando o primeiro projeto... Arquivo -> Novo Projeto Multimedia
Rodando a aplicação... Ctrl+ F9 Compilar Ctrl+ F10 Executar F9 Compilar e executar Ctrl+ F11 Recompilatudo
Opções de projeto...
Iniciando a programação com Allegro Passo 1: incluir a biblioteca allegro.h Passo 2: chamar a função allegro_init(); Exemplo 1
Obtendo informações da máquina os_type allegro_id os_multitasking cpu_vendor Exemplo 2
Iniciando o modo gráfico em Allegro int set_gfx_mode()
Parâmetros de set_gfx_mode() 1. Modo gráfico : Janela ou Fullscreen 2. Largura 3. Altura SCREEN_W SCREEN_H 4. Largura virtual 5. Altura virtual Exemplo 3
Programação gráfica em Allegro Conceitos básicos: Pixel: menor unidade gráfica
Programação gráfica em Allegro Conceitos básicos: Bitmap: matriz de pixelsque representa uma imagem
Programação gráfica em Allegro Ao ser inicializado, o Allegro cria um bitmap(screen) para representar a superfície de desenho (front buffer).
Programação gráfica em Allegro X Y BITMAP* screen
Programação gráfica em Allegro Funções gráficas oferecidas pelo Allegro: int makecol(int, int, int)
Programação gráfica em Allegro Funções gráficas oferecidas pelo Allegro: voidtextprintf(bitmap*, FONT, int, int, char*,...); Exemplo 4
Programação gráfica em Allegro Funções gráficas oferecidas pelo Allegro: void putpixel(bitmap*, int, int, int); int getpixel(bitmap*, int, int); Exemplo 5
Programação gráfica em Allegro Funções gráficas oferecidas pelo Allegro: hline(bitmap*, int, int, int, int) vline(bitmap*, int, int, int, int) line(bitmap*, int, int, int, int, int); Exemplo 6, Exemplo7, Exemplo8
Programação gráfica em Allegro Funções gráficas oferecidas pelo Allegro: rect(bitmap*, int, int, int, int,int); circle(bitmap*, int, int, int, int); ellipse(bitmap*, int, int, int, int, int); Exemplo 9, Exemplo10, Exemplo11 * Existem também versões com preenchimento
Programação gráfica em Allegro Funções gráficas oferecidas pelo Allegro: spline(bitmap*, int*, int); triangle(bitmap*, int, int, int, int,int, int,int); polygon(bitmap*, int, int*, int); Exemplo12, Exemplo13, Exemplo14
Programação gráfica em Allegro Funções gráficas oferecidas pelo Allegro: floodfill(bitmap*,int,int,int); Exemplo12, Exemplo13, Exemplo14
Interação com o usuário Recursos oferecidos pelo Allegro: key[] vetor que representa o estado das teclas KEY_MAX representa o total de teclas no vetor
Interação com o usuário Recursos oferecidos pelo Allegro: void install_keyboard(); void remove_keyboard(); Exemplo1
Interação com o usuário Recursos oferecidos pelo Allegro: void install_mouse(); void set_mouse_sprite(bitmap*); void show_mouse(bitmap*); void position_mouse(int, int); Exemplo2
Interação com o usuário Recursos oferecidos pelo Allegro: mouse_b& 1 mouse_b& 2 Exemplo3
Protótipo Game 1
Trabalhando com Imagens em Allegro Funções: voidset_color_depth(int); BITMAP* load_bitmap(char*, RGB*);
Trabalhando com Imagens em Allegro Funções: void blit(bitmap*, BITMAP*, int, int, int, int, int,int); voiddestroy_bitmap(bitmap*); Exemplo 0
Trabalhando com Imagens em Allegro Funções: void masked_blit(bitmap*, BITMAP*, int, int, int, int, int,int); Colorkey= (255, 0, 255) Exemplo 1
Trabalhando com Imagens em Allegro Funções: void draw_sprite(bitmap*, BITMAP*, int, int); Colorkey= (255, 0, 255) Exemplo 2
Trabalhando com Imagens em Allegro Funções: draw_sprite_v_flip(bitmap*, BITMAP*, int, int); draw_sprite_h_flip(bitmap*, BITMAP*, int, int); draw_sprite_vh_flip(bitmap*, BITMAP*, int, int); Exemplo3
Trabalhando com Imagens em Allegro Funções: foid rotate_sprite(bitmap*, BITMAP*, int, int, int); Rotação completa = 256 Obrigatório o uso da função itofix() Exemplo4
Animando Imagens em Allegro Técnica 1: carregamento de várias imagens voidanimasprite() { draw_sprite(screen,imagem[iquadroatual],iposx,300); iquadroatual = (iquadroatual>4)? 0: ++iquadroatual; } Exemplo5
Animando Imagens em Allegro Técnica 2: carregamento uma imagem com vários quadros e utilizando buffer duplo (Exemplo 6). void DesenhaSprite(BITMAP* buffer){ int icoordenadax= (iquadroatual% (sprite->w/ilarguraquadro)) * ilarguraquadro; int icoordenaday= (iquadroatual/ (sprite->w/ilarguraquadro)) * ialturaquadro; masked_blit(sprite,buffer,icoordenadax,icoordenaday, iposx, iposy, ilarguraquadro, ialturaquadro); } iquadroatual = (iquadroatual>=iqtdquadros-1)?0:++iquadroatual;
Entendendo o conceito de layers Técnica utilizada para a criação de cenários Exemplo7
Entendendo o conceito de layers Técnica utilizada para a criação de cenários Exemplo8
Protótipo Game 2
Links úteis Allegro: http://alleg.sourceforge.net/ Dev-C++ http://www.bloodshed.net/de vcpp.html
Bibliografia