CES-10 INTRODUÇÃO À
COMPUTAÇÃO
Aulas Práticas – 2013
Capítulo VI
Desenhos e Animação
Arquivos fornecidos para a aula:

CES10 Prat 6 2013.ppt: Slides da aula

lab_6_ces10_2013.doc: proposta do Lab 6

Graficos_DevCpp.pdf: instruções do Prof. Paulo André para
utilização do modo gráfico (Aba Artigos da página do prof)

Graficos_DevCpp.zip: arquivos com código de rotinas
gráficas para incluir no Dev (Aba Códigos da página do prof)

Instrucoes_CONIO2.pdf: instruções do Prof. Paulo André
para controle do cursor no modo texto do Dev (Aba Artigos
da página do prof)

conio2.zip: arquivos para a biblioteca conio2 a ser utilizada
no Dev (Aba Códigos da página do prof)
Programa 6.1: Posicionamento do cursor no vídeo-texto
Copiar, salvar e
clrscr (conio.h):
#include <stdio.h>
executar no
apaga a tela
#include <conio.h>
Borland
void main () {
\r: reescreve a 1ª
int col, lin; char c;
linha da tela
printf ("Maximize a tela e digite algo: ");
Posiciona o cursor
getche ();
nas coordenadas
clrscr ();
desejadas – digitar
printf ("Posicionar cursor? (s/n): ");
um caractere
Posiciona o cursor
c = getche();
na coluna e linha 1
while (c == 's' || c == 'S') {
printf ("\rDigite a coluna e a linha: ");
Apaga a 1ª linha
scanf ("%d%d", &col, &lin);
\r: reescreve a 1ª
gotoxy (col, lin); getche ();
linha da tela
gotoxy (1, 1);
printf ("
");
printf ("\rPosicionar cursor? (s/n): "); c = getche();
}
Para executar no Dev, devem ser copiados os arquivos referentes ao conio2.h
}
Programa 6.2: Desenho de segmentos de retas com ‘*’
Copiar, salvar e
#include <stdio.h>
executar no
#include <conio.h>
Borland
void main () {
int a, b, i;
printf ("Maximize a tela e digite algo!");
getche ();
clrscr ();
for (a=1, b=1, i=1; i<=10; a+=8, b+=2, i++) {
gotoxy (a, b); printf ("********");
}
printf ("\n\nDigite algo para encerrar: ");
getch ();
Sempre posiciona o cursor
}
Na tela
na posição [a, b]
Inicialmente [a, b] = [1, 1]
A cada repetição a+=8 e
b+=2
Programa 6.3: Determinação dos limites do gotoxy
Copiar, salvar e
#include <stdio.h>
executar no
#include <conio.h>
Borland
void main () {
int i;
printf ("Maximize a tela e digite algo!");
getche ();
clrscr ();
for (i=1; i<=80; i++) {
gotoxy (i, i); printf ("%d", i%10);
}
printf ("\n\nDigite algo para encerrar: ");
getch ();
}
O programa vai tentar escrever o
valor de i%10 na diagonal de uma
tela 80x80
Ver resultado a seguir
Limites:
Coluna 80
Linha 44
Programa 6.4: Passeio do ‘*’ pelo vídeo-texto
Copiar, salvar e
#include <stdio.h>
executar no
#include <conio.h>
Borland
void main () {
int i, j, demora = 100000000;
printf ("Maximize a tela e digite algo: ");
getche (); clrscr ();
for (i = 10; i <= 60; i++) {
gotoxy (i, 5); printf (" *");
for (j = 1; j <= demora; j++);
}
for (i = 6; i <= 40; i++) {
gotoxy (61, i-1); printf (" ");
gotoxy (61, i); printf ("*");
for (j = 1; j <= demora; j++);
}
printf ("\n\nDigite algo para encerrar: ");
getch ();
}
Programa 6.4: Passeio do ‘*’ pelo vídeo-texto
Para i = 10, na linha 5:
#include <stdio.h>
#include <conio.h>
Escreve ‘ ’ na coluna
void main () {
10 e ‘*’ na coluna 11
int i, j, demora = 100000000;
printf ("Maximize a tela e digite algo: "); Para i = 11, na linha 5:
getche (); clrscr ();
for (i = 10; i <= 60; i++) {
Escreve ‘ ’ na coluna
gotoxy (i, 5); printf (" *");
11, apagando ‘*’
for (j = 1; j <= demora; j++);
Escreve ‘*’ na coluna
}
12
for (i = 6; i <= 40; i++) {
gotoxy (61, i-1); printf (" ");
Dá a impressão de
gotoxy (61, i); printf ("*");
movimento do ‘*’ uma
for (j = 1; j <= demora; j++);
posição p/direita
}
printf ("\n\nDigite algo para encerrar: ");
Para i = 60, ‘*’ vai
getch ();
para a coluna 61
}
Programa 6.4: Passeio do ‘*’ pelo vídeo-texto
#include <stdio.h>
#include <conio.h>
void main () {
int i, j, demora = 100000000;
Faz ‘*’ permanecer
printf ("Maximize a tela e digite algo: ");
numa posição durante
getche (); clrscr ();
um t perceptível
for (i = 10; i <= 60; i++) {
gotoxy (i, 5); printf (" *");
O valor 100.000.000
for (j = 1; j <= demora; j++);
para ‘demora’ é
}
experimental
for (i = 6; i <= 40; i++) {
Esse valor pode variar
gotoxy (61, i-1); printf (" ");
com o computador
gotoxy (61, i); printf ("*");
for (j = 1; j <= demora; j++);
}
printf ("\n\nDigite algo para encerrar: ");
getch ();
}
Programa 6.4: Passeio do ‘*’ pelo vídeo-texto
#include <stdio.h>
#include <conio.h>
void main () {
int i, j, demora = 100000000;
printf ("Maximize a tela e digite algo: ");
Para i = 6, na coluna
getche (); clrscr ();
61:
for (i = 10; i <= 60; i++) {
gotoxy (i, 5); printf (" *");
Escreve ‘ ’ na linha 5,
for (j = 1; j <= demora; j++);
apagando ‘*’
}
Escreve ‘*’ na linha 6
for (i = 6; i <= 40; i++) {
gotoxy (61, i-1); printf (" ");
Dá a impressão de
gotoxy (61, i); printf ("*");
movimento do ‘*’ uma
for (j = 1; j <= demora; j++);
posição p/baixo
}
printf ("\n\nDigite algo para encerrar: ");
Para i = 40, ‘*’ vai
getch ();
para a linha 40
}
Programa 6.4: Passeio do ‘*’ pelo vídeo-texto
#include <stdio.h>
#include <conio.h>
void main () {
int i, j, demora = 100000000;
printf ("Maximize a tela e digite algo: ");
getche (); clrscr ();
for (i = 10; i <= 60; i++) {
gotoxy (i, 5); printf (" *");
for (j = 1; j <= demora; j++);
}
for (i = 6; i <= 40; i++) {
gotoxy (61, i-1); printf (" ");
Também faz ‘*’
gotoxy (61, i); printf ("*");
permanecer numa
for (j = 1; j <= demora; j++);
posição durante um
}
printf ("\n\nDigite algo para encerrar: "); t perceptível
getch ();
}
Rotinas gráficas:

Rotinas gráficas são necessárias para vários programas
profissionais

A Linguagem C padrão não define rotinas gráficas

Foram criados independentemente vários conjuntos de rotinas
gráficas, tais como o Microsoft C/C++ para DOS e o
Borland Graphics Interface (BGI)

Nestas aulas será utilizada a BGIm, que é uma versão da BGI
para o ambiente Dev C++
Instalação da Biblioteca BGI no ambiente Dev C++:

Arquivos necessários (compactados em
Graficos_DevCpp.zip):



graphics.h: copiar em C:\Dev-Cpp\include
libbgi.a: copiar em C:\Dev-Cpp\lib
Uso de projetos:


Para trabalhar em modo gráfico será necessário utilizar o
conceito de projeto
Projeto é um container que armazena todos os elementos
(arquivos) que compõem um programa
Criando um novo projeto no ambiente Dev-C++:

Clicar no menu "File" e selecionar "New", "Project... "

Escolher "Empty Project" e certificar-se de que a opção
"C++ project" está selecionada

Escolher um nome para o projeto
 Pode-se dar qualquer nome válido para um arquivo
 O nome do projeto será o nome do executável a ser gerado

Após escolher o nome, clicar "OK "

O Dev-C++ irá perguntar onde salvar o projeto:
 Escolher um diretório apropriado e salvar o projeto
Criando ou adicionando arquivos ao projeto:

Duas formas:



Clicar no menu "File" e selecionar "New Source File"
ou
Clicar no menu "Project" e selecionar "New File"
Então é só editar o arquivo com o programa e salvar
Configuração do uso da biblioteca gráfica no projeto:

Criado o projeto, é preciso mandar o Dev-C++ utilizar a
biblioteca BGIm (que implementa a BGI para o Dev-C++)

Isto é feito através da janela "Project Options"

A seguir, um conjunto de passos para realizar essa tarefa
Passos para a configuração do uso da BGIm:

Clicar no menu "Project" e escolher "Project Options"

Clicar na tab "Geral" e selecione "Win32 GUI"

Clicar na tab "Parameters"

No campo "Linker", digite o seguinte texto:
-lbgi
-lgdi32
Clicar OK
-lcomdlg32
-luuid
-loleaut32
-lole32
Programa 6.5: Desenho simples no vídeo-gráfico
#include <stdio.h>
#include <graphics.h>
int main () {
int i, j, left, top, bottom, right;
initwindow (700, 500, "Primeiro Programa Grafico");
getch ();
left = 10; right = 600; top = 10; bottom = 200;
for (i = top; i <= bottom; i++)
- Criar projeto
for (j = left; j <= right; j++)
- Adicionar este arquivo
putpixel (j, i, MAGENTA);
ao projeto
- Configurar o projeto
getch ();
para o uso da BGI
closegraph ( );
- Salvar e executar
}
Programa 6.5: Desenho simples no vídeo-gráfico
#include <stdio.h>
Abre uma janela com título,
#include <graphics.h> de 700 colunas e 500 linhas
int main () {
int i, j, left, top, bottom, right;
initwindow (700, 500, "Primeiro Programa Grafico");
getch ();
left = 10; right = 600; top = 10; bottom = 200;
for (i = top; i <= bottom; i++)
for (j = left; j <= right; j++)
putpixel (j, i, MAGENTA);
getch ();
closegraph ( );
Colore o pixel [j, i] com
}
a cor MAGENTA
Lista de cores disponíveis na BGI:
Programa 6.6: Desenho de várias figuras
#include
#include
int main
int i,
/*
<stdio.h>
<graphics.h>
() {
j, left, top, bottom, right;
Abrir janela grafica
*/
initwindow (700, 500, "Varias Figuras");
/*
Colorir uma area quadrada de pixels
*/
getch ();
left = 160; right = 400; top = 80; bottom = 320;
for (i = top; i <= bottom; i++)
for (j = left; j <= right; j++)
putpixel (j, i, RED);
/*
Desenhar as bordas de um quadrado
*/
getch ();
setcolor (YELLOW);
rectangle (left, top, right, bottom);
/*
Desenhar as bordas de um circulo
*/
getch ();
setcolor (LIGHTBLUE);
circle (280, 200, 120);
/*
Desenhar um segmento de reta
getch ();
setcolor (WHITE);
line (40, 480, 640, 80);
*/
/*
Preencher um retangulo com textura e cor
*/
getch ();
left = 80; right = 560; top = 400; bottom = 420;
setfillstyle(11, LIGHTBLUE);
bar (left, top, right, bottom);
/*
Escrever um texto
*/
getch ();
setbkcolor(BROWN);
outtextxy(50, 250, "Teste");
/*
Fechar janela grafica
getch ();
closegraph ( );
}
*/
Mais detalhes sobre
rotinas gráficas:
Manual do Prof. Paulo
André Castro
Sites da Internet
Download

include