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 Allegro no Dev-C++
•Ferramentas -> Atualizações •Selecionar o servidor
•Check for updates •Groups -> Allegro •Versão 4.4.2
Criando o primeiro projeto...
•Arquivo -> Novo •Projeto
Rodando a aplicação...
•Ctrl + F9 – Compilar
•Ctrl + F10 – Executar
•F9 – Compilar e executar
Iniciando a programação com Allegro
Passo 1: incluir a biblioteca allegro.h
Passo 2: chamar a função allegro_init();
Obtendo informações da máquina os_type allegro_id os_multitasking cpu_vendor Exemplo 2
Iniciando o modo gráfico em Allegro
Parâmetros de set_gfx_mode()
1. Modo gráfico : Janela ou Fullscreen 2. Largura 3. Altura 4. Largura virtual 5. Altura virtual Exemplo 3 SCREEN_W SCREEN_H
Programação gráfica em Allegro
Conceitos básicos:
Programação gráfica em Allegro
Conceitos básicos:
Bitmap: matriz de pixels que representa uma imagem
Programação gráfica em Allegro
Ao ser inicializado, o Allegro cria um bitmap (screen) para representar a superfície de
Programação gráfica em Allegro
BITMAP* screen
X
Programação gráfica em Allegro
Funções gráficas oferecidas pelo Allegro:
Programação gráfica em Allegro
Funções gráficas oferecidas pelo Allegro: void textprintf(BITMAP*, FONT, int, int,
char*, ...);
Programação gráfica em Allegro
Funções gráficas oferecidas pelo Allegro: void putpixel(BITMAP*, int, int, int);
int getpixel(BITMAP*, int, int);
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);
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);
* 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);
Programação gráfica em Allegro
Funções gráficas oferecidas pelo Allegro:
floodfill(BITMAP*,int,int,int);
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();
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);
Interação com o usuário
Recursos oferecidos pelo Allegro:
mouse_b & 1 mouse_b & 2
Trabalhando com Imagens em Allegro Funções: void set_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);
void destroy_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)
Trabalhando com Imagens em Allegro
Funções:
void draw_sprite(BITMAP*, BITMAP*, int, int);
Colorkey = (255, 0, 255)
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);
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()
Animando Imagens em Allegro Técnica 1: carregamento de várias imagens
void AnimaSprite() {
draw_sprite(screen,imagem[iQuadroAtual],iPosX,300); iQuadroAtual = (iQuadroAtual>4)? 0: ++iQuadroAtual; }
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
Entendendo o conceito de layers Técnica utilizada para a criação de cenários
Links úteis •Allegro: http://alleg.sourceforge.net/ • Dev-C++ http://www.bloodshed.net/de vcpp.html