Conheça a iniciativa da Biblioteca dos Desenvolvedores  
Índice da Biblioteca  
Área dos Usuários  
Fórum de Discussão  
Forúm
 
  RETAS E FIGURAS GEOMÉTRICAS

Esse artigo tem como objetivo mostrar que o Allegro possui funções para de desenhar as figuras geométricas de forma fácil e prática.

Não iremos estudar a fundo as figuras geométricas muito menos geometria plana.
Dessa forma fica a critério do programador utilizar ou não durante o desenvolvimento do jogo. São elas:



void circle(BITMAP *bmp, int x, int y, int radius, int color);

Essa função desenha um circulo especificando o centro e o raio. Ela recebe como argumentos:

  1. Destino do desenho: screen
  2. Posição x: SCREEN_W/2 - Metade da tela
  3. Posição y: SCREEN_H/2 - Metade da tela
  4. Raio: 50 pixels
  5. Cor do contorno: makecol(255,255,0) - Amarelo

Exemplo:

circle(screen, SCREEN_W/2, SCREEN_H/2, 50, makecol(255,255,0));

O exemplo acima deverá mostrar um circulo amarelo no centro da tela.


 

void circlefill(BITMAP *bmp, int x, int y, int radius, int color);

Essa função desenha um circulo preenchido especificando o centro e o raio. Ela recebe como argumentos:

  1. Destino do desenho: screen
  2. Posição x: SCREEN_W/2 - Metade da tela
  3. Posição y: SCREEN_H/2 - Metade da tela
  4. Raio: 50 pixels
  5. Cor do contorno e preenchimento: makecol(255,255,0) - Amarelo

Exemplo:

circlefill(screen, SCREEN_W/2, SCREEN_H/2, 50, makecol(255,255,0));

O exemplo acima deverá mostrar um circulo preenchido em amarelo no centro da tela.


 

void ellipse(BITMAP *bmp, int x, int y, int rx, int ry, int color);

Essa função desenha um circulo preenchido especificando o centro o raio x e o raio y. Ela recebe como argumentos:

  1. Destino do desenho: screen
  2. Posição x: SCREEN_W/2 - Metade da tela
  3. Posição y: SCREEN_H/2 - Metade da tela
  4. Raio x: 50 pixels
  5. Raio y: 70 pixels
  6. Cor do contorno e preenchimento: makecol(255,100,0) - Laranja

Exemplo:

ellipse(screen, SCREEN_W/2, SCREEN_H/2, 70, 100, makecol(255,100,0));

O exemplo acima deverá mostrar um circulo oval em laranja no centro da tela.


 

void ellipsefill(BITMAP *bmp, int x, int y, int rx, int ry, int color);

Essa função desenha um circulo preenchido especificando o centro o raio x e o raio y. Ela recebe como argumentos:

  1. Destino do desenho: screen
  2. Posição x: SCREEN_W/2 - Metade da tela
  3. Posição y: SCREEN_H/2 - Metade da tela
  4. Raio x: 50 pixels
  5. Raio y: 70 pixels
  6. Cor do contorno e preenchimento: makecol(255,100,0) - Laranja

Exemplo:

ellipsefill(screen, SCREEN_W/2, SCREEN_H/2, 70, 100, makecol(255,100,0));

O exemplo acima deverá mostrar um circulo oval preenchido em laranja no centro da tela.


 

void rect(BITMAP *bmp, int x1, int y1, int x2, int y2, int color);

Essa função desenha um retângulo a partir de duas coordenadas opostas. A primeira coordenada está no canto superior esquerdo. A segunda coordenada está no canto inferior direito. Ela recebe como argumentos:

  1. Destino do desenho: screen
  2. Posição x1: 50
  3. Posição y1: 50
  4. Posição x2: 200
  5. Posição y2: 150
  6. Cor do contorno: makecol(255,255,0) - Amarelo

Exemplo:

rect(screen, 50, 50, 200, 150, makecol(255,255,0));

O exemplo acima desenha um retângulo na tela.


 

void rectfill(BITMAP *bmp, int x1, int y1, int x2, int y2, int color);

Essa função desenha um retângulo preenchido a partir de duas coordenadas opostas. A primeira coordenada está no canto superior esquerdo. A segunda coordenada está no canto inferior direito. Ela recebe como argumentos:

  1. Destino do desenho: screen
  2. Posição x1: 50
  3. Posição y1: 50
  4. Posição x2: 200
  5. Posição y2: 150
  6. Cor do contorno e preenchimento: makecol(255,255,0) - Amarelo

Exemplo:

rectfill(screen, 50, 50, 200, 150, makecol(255,255,0));

O exemplo acima desenha um retângulo preenchido na tela.


 

void polygon(BITMAP *bmp, int vertices, const int *points, int color);

Essa função desenha um polígono na tela especificando a quantidade de vértices. Ela recebe como argumentos:

  1. Destino do desenho: screen
  2. Qtde Vértices: 6
  3. Coordenadas de cada vértice: iPontos
  4. Cor do contorno e preenchimento: makecol(255,255,0) – Amarelo

 Exemplo:

int iPontos[12] = {150,150, 200,200, 200,250, 150,300, 100,250, 100,200};

polygon(screen, 6, iPontos, makecol(255, 255, 0));

O exemplo acima desenha um polígono preenchido em amarelo com 6 vértices. Primeiramente precisamos criar um array, nesse caso iPontos, responsável por armazenar as coordenadas de cada ponto. O tamanho do array sempre vai ser 2x (duas vezes) a quantidade de vértices porque cada ponto possui posição x e y.


 

void triangle(BITMAP *bmp, int x1, y1, x2, y2, x3, y3, int color);

Essa função desenha um triângulo na tela especificando as coordenadas dos três vértices do triangulo. Ela recebe como argumentos:

  1. Destino do desenho: screen
  2. Posição x1,y1 – vértice 1: 100,100
  3. Posição x2,y2 – vértice 2: 50,200
  4. Posição x3,y3 – vértice 3: 150,200
  5. Cor do contorno e preenchimento: makecol(255,255,0) – Amarelo

Exemplo:

triangle(screen, 100, 100, 50, 200, 150, 200, makecol(255,255,0));

O exemplo acima desenha um triangulo na tela preenchido em amarelo.


 

void line(BITMAP *bmp, int x1, int y1, int x2, int y2, int color);

Essa função desenha uma linha da coordenada x1,y1 a x2,y2. Ela recebe como argumentos:

  1. Destino do desenho: screen
  2. Posição x1,y1: 100,100
  3. Posição x2,y2: 200,200
  4. Cor da linha: makecol(255,255,0) – Amarelo

Exemplo:

line(screen, 100, 100, 200, 200, makecol(255,255,0));

O exemplo acima traça uma linha amarela na diagonal do ponto 100,100 ao ponto 200,200.


 

void fastline(BITMAP *bmp, int x1, int y1, int x2, int y2, int color);

Essa função desenha uma linha de um ponto x1,y1 ao x2,y2. É uma versão mais rápida que a função line, porém, a exatidão do pixel não está garantida para esta função. Ela recebe como argumentos:

  1. Destino do desenho: screen
  2. Posição x1,y1: 100,100
  3. Posição x2,y2: 200,200
  4. Cor da linha: makecol(255,255,0) – Amarelo

Exemplo:

fastline(screen, 100, 100, 200, 200, makecol(255,255,0));

O exemplo acima traça uma linha amarela na diagonal do ponto 100,100 ao ponto 200,200.


 

void hline(BITMAP *bmp, int x1, int y, int x2, int color);

Essa função desenha uma linha horizontal na tela. Ela recebe como argumentos:

  1. Destino do desenho: screen
  2. Posição Inicial x1,y: 0,100
  3. Posição final x2: 640 – Até o final da tela.
  4. Cor da linha: makecol(255,255,0) – Amarelo

Exemplo:

hline(screen, 0, 100, 640, makecol(255,255,0));

A função acima desenha uma linha amarela na horizontal. Ela vai da posição 0 a posição 640. De ponta a ponta.


 

void vline(BITMAP *bmp, int x, int y1, int y2, int color);

Essa função desenha uma linha na vertical. Ela recebe como argumentos:

  1. Destino do desenho: screen
  2. Posição Inicial x1,y: 0,100
  3. Posição final x2: 640 – Até o final da tela.
  4. Cor da linha: makecol(255,255,0) – Amarelo

Exemplo:

vline(screen, 320, 0, 480, makecol(255,255,0));

O exemplo acima desenha uma linha amarela na vertical. Ela vai do ponto 320 (metade da tela) até o ponto 480 (final da tela). De ponta a ponta dividindo a tela ao meio.



Caro leitor, chegamos ao fim do entendimento das funções responsáveis por desenhar as figuras geométricas na tela.
O conteúdo foi bastante resumido, porém bastante prático.

Cabe a você saber como e quando utilizar essas funções no seu projeto.

Com base no aprendizado acima você já pode desenvolver o layout de um relógio analógico usando a função de circunferência e linhas ou fazer uma caixa de dialogo entre dois personagens com um retângulo.

Qualquer dúvida entre em contato com o pessoal da BDJogos através do fórum.

Abraço
BDJogos



Contribuidor
Bruno A. Rovela
10/07/2007

Voltar

 
 

01/06/2007 (C) Copyright. Todos os Direitos Reservados. Leia a política de privacidade do portal.
É proibida a cópia de conteúdo deste site de acordo com a Lei Brasileira de Direitos Autorais.