ces-10 introduÇÃo À computaÇÃo aulas práticas – 2014 capítulo vi desenhos e animação

26
CES-10 INTRODUÇÃO À CES-10 INTRODUÇÃO À COMPUTAÇÃO COMPUTAÇÃO Aulas Práticas – 2014 Aulas Práticas – 2014 Capítulo VI Capítulo VI Desenhos e Animação Desenhos e Animação

Upload: internet

Post on 22-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

CES-10 INTRODUÇÃO CES-10 INTRODUÇÃO À COMPUTAÇÃOÀ COMPUTAÇÃO

Aulas Práticas – 2014Aulas Práticas – 2014

Capítulo VI Capítulo VI

Desenhos e AnimaçãoDesenhos e Animação

Page 2: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

Arquivos fornecidos para a aulaArquivos fornecidos para a aula::

CES10 Prat 6 2014.ppt: CES10 Prat 6 2014.ppt: slides da aulaslides da aula

lab_6_ces10_2014.doc:lab_6_ces10_2014.doc: proposta do Lab 6 proposta do Lab 6

conio2.zip: conio2.zip: arquivos para a biblioteca arquivos para a biblioteca conio2conio2 a ser utilizada no a ser utilizada no CodeBlocks CodeBlocks (Aba (Aba CódigosCódigos da página do prof); contém:da página do prof); contém:

– conio2.hconio2.h e e libconio.alibconio.a

winbgi.zip:winbgi.zip: arquivos com rotinas gráficas a arquivos com rotinas gráficas a serem utilizadas no serem utilizadas no CodeBlocks CodeBlocks (Aba (Aba CódigosCódigos da página do prof); contém:da página do prof); contém:

– winbgi.cwinbgi.c e e winbgi.hwinbgi.h

Page 3: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

Instruções para usar o conio2 no Instruções para usar o conio2 no CodeBlocks:CodeBlocks:

Adaptação de documento do Prof. Paulo André Adaptação de documento do Prof. Paulo André Lima de CastroLima de Castro

1.1.Copiar o arquivo Copiar o arquivo conio2.hconio2.h para para C:\Arquivos C:\Arquivos de Programas (x86) \CodeBlocks\MingW\de Programas (x86) \CodeBlocks\MingW\includeinclude

2.2.Copiar o arquivo Copiar o arquivo libconio.alibconio.a para para C:\ Arquivos C:\ Arquivos de Programas (x86) \CodeBlocks\MingW \de Programas (x86) \CodeBlocks\MingW \liblib

3.3.Abrir o Abrir o CodeBlocksCodeBlocks e entrar no menu e entrar no menu Settings → CompilerSettings → Compiler

Page 4: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

Instruções para usar o conio2 no Instruções para usar o conio2 no CodeBlocks:CodeBlocks:

4.4.Clicar no botão Clicar no botão “Linker Settings”“Linker Settings”

5.5.Abaixo do quadro Abaixo do quadro “Link libraries”“Link libraries”, clicar no , clicar no botão botão “Add”“Add”

6.6.Escrever na janelinha Escrever na janelinha “Add library”“Add library” o o seguinte: seguinte: libconio.alibconio.a

7.7.No programa, colocar: No programa, colocar: #include <conio2.h>#include <conio2.h>textbackground () – Seta a cor de fundotextcolor () – Seta a cor do textoclrscr () – Limpa a telagotoxy () – Coloca o cursor em uma posição da tela

Algumas funções do conio2:

Page 5: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

Programa 6.1: Posicionamento do cursor no Programa 6.1: Posicionamento do cursor no vídeo-textovídeo-texto

#include <stdio.h>#include <stdio.h>

#include <conio.h>#include <conio.h>

#include <conio2.h>#include <conio2.h>

int main () {int main () {

int col, lin; char c;int col, lin; char c;

printf ("Maximize a tela e digite algo: "); printf ("Maximize a tela e digite algo: ");

getche (); clrscr ();getche (); clrscr ();

printf ("Posicionar cursor? (s/n): "); printf ("Posicionar cursor? (s/n): ");

c = getche();c = getche();

while (c == 's' || c == 'S') {while (c == 's' || c == 'S') {

printf ("\rDigite a coluna e a linha: ");printf ("\rDigite a coluna e a linha: ");

scanf ("%d%d", &col, &lin);scanf ("%d%d", &col, &lin);

gotoxy (col, lin); getche ();gotoxy (col, lin); getche ();

gotoxy (1, 1);gotoxy (1, 1);

printf (" ");printf (" ");

printf ("\rPosicionar cursor? (s/n): "); c = getche();}printf ("\rPosicionar cursor? (s/n): "); c = getche();}

return 0;return 0;

}}

Copiar, salvar e executar

clrscr (conio2.h): limpa a tela\r: reescreve a 1ª linha da telaPosiciona o cursor nas coordenadas desejadas – digitar um caractere

Posiciona o cursor na coluna e linha 1Limpa a 1ª linha\r: reescreve a 1ª linha da tela

Page 6: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

Programa 6.2: Determinação dos limites do Programa 6.2: Determinação dos limites do gotoxygotoxy

#include <stdio.h>#include <stdio.h>

#include <conio.h>#include <conio.h>

#include <conio2.h>#include <conio2.h>

int main () {int main () {

int i, n;int i, n;

printf ("TESTE DO LIMITE DE LINHAS DO GOTOXY");printf ("TESTE DO LIMITE DE LINHAS DO GOTOXY");

printf ("\n\n\tDigite o numero de linhas: ");printf ("\n\n\tDigite o numero de linhas: ");

scanf ("%d", &n);scanf ("%d", &n);

printf ("\nMaximize a tela e digite algo!");printf ("\nMaximize a tela e digite algo!");

getche (); clrscr ();getche (); clrscr ();

for (i=1; i<=n; i++) {for (i=1; i<=n; i++) {

gotoxy ((i-1)%80+1, i); printf ("%d", i%10);gotoxy ((i-1)%80+1, i); printf ("%d", i%10);

}}

printf ("\nDigite algo para encerrar: ");printf ("\nDigite algo para encerrar: ");

getch ();getch ();

return 0;return 0;

}}

Copiar, salvar e executar

Experimentar os seguintes valores para n:40, 53, 60, 80, 200, 300, 400

Colunas variam de 1 a 80

Valores escritos variam de 0 a 9

Qual o limite de linhas atingidas pelo gotoxy?Qual o número de linhas da tela maximizada?

Page 7: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

Limites no Borland (n = 80):

Coluna 80Linha 44

Page 8: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

Programa 6.3: Passeio do ‘*’ pelo vídeo-textoPrograma 6.3: Passeio do ‘*’ pelo vídeo-texto

#include <stdio.h>#include <stdio.h>

#include <conio.h>#include <conio.h>

#include <conio2.h>#include <conio2.h>

int main () {int main () {

int i, j, demora = 20000000;int i, j, demora = 20000000;

printf ("Maximize a tela e digite algo: "); printf ("Maximize a tela e digite algo: ");

getche (); clrscr ();getche (); clrscr ();

for (i = 10; i <= 60; i++) {for (i = 10; i <= 60; i++) {

gotoxy (i, 5); printf (" *");gotoxy (i, 5); printf (" *");

for (j = 1; j <= demora; j++);}for (j = 1; j <= demora; j++);}

for (i = 6; i <= 40; i++) {for (i = 6; i <= 40; i++) {

gotoxy (61, i-1); printf (" ");gotoxy (61, i-1); printf (" ");

gotoxy (61, i); printf ("*");gotoxy (61, i); printf ("*");

for (j = 1; j <= demora; j++);for (j = 1; j <= demora; j++);

}}

printf ("\n\nDigite algo para encerrar: ");printf ("\n\nDigite algo para encerrar: ");

getch (); return 0;getch (); return 0;

}}

Copiar, salvar e executar

Page 9: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

Programa 6.3: Passeio do ‘*’ pelo vídeo-textoPrograma 6.3: Passeio do ‘*’ pelo vídeo-texto

#include <stdio.h>#include <stdio.h>

#include <conio.h>#include <conio.h>

#include <conio2.h>#include <conio2.h>

int main () {int main () {

int i, j, demora = 20000000;int i, j, demora = 20000000;

printf ("Maximize a tela e digite algo: "); printf ("Maximize a tela e digite algo: ");

getche (); clrscr ();getche (); clrscr ();

for (i = 10; i <= 60; i++) {for (i = 10; i <= 60; i++) {

gotoxy (i, 5); printf (" *");gotoxy (i, 5); printf (" *");

for (j = 1; j <= demora; j++);}for (j = 1; j <= demora; j++);}

for (i = 6; i <= 40; i++) {for (i = 6; i <= 40; i++) {

gotoxy (61, i-1); printf (" ");gotoxy (61, i-1); printf (" ");

gotoxy (61, i); printf ("*");gotoxy (61, i); printf ("*");

for (j = 1; j <= demora; j++);for (j = 1; j <= demora; j++);

}}

printf ("\n\nDigite algo para encerrar: ");printf ("\n\nDigite algo para encerrar: ");

getch (); return 0;getch (); return 0;

}}

Para i = 10, na linha 5:

Escreve ‘ ’ na coluna 10 e ‘*’ na coluna 11

Para i = 11, na linha 5:

Escreve ‘ ’ na coluna 11, apagando ‘*’

Escreve ‘*’ na coluna 12

Dá a impressão de movimento do ‘*’ uma posição p/direita

Para i = 60, ‘*’ vai para a coluna 61

Page 10: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

Programa 6.3: Passeio do ‘*’ pelo vídeo-textoPrograma 6.3: Passeio do ‘*’ pelo vídeo-texto

#include <stdio.h>#include <stdio.h>

#include <conio.h>#include <conio.h>

#include <conio2.h>#include <conio2.h>

int main () {int main () {

int i, j, demora = 20000000;int i, j, demora = 20000000;

printf ("Maximize a tela e digite algo: "); printf ("Maximize a tela e digite algo: ");

getche (); clrscr ();getche (); clrscr ();

for (i = 10; i <= 60; i++) {for (i = 10; i <= 60; i++) {

gotoxy (i, 5); printf (" *");gotoxy (i, 5); printf (" *");

for (j = 1; j <= demora; j++);for (j = 1; j <= demora; j++);}}

for (i = 6; i <= 40; i++) {for (i = 6; i <= 40; i++) {

gotoxy (61, i-1); printf (" ");gotoxy (61, i-1); printf (" ");

gotoxy (61, i); printf ("*");gotoxy (61, i); printf ("*");

for (j = 1; j <= demora; j++);for (j = 1; j <= demora; j++);

}}

printf ("\n\nDigite algo para encerrar: ");printf ("\n\nDigite algo para encerrar: ");

getch (); return 0;getch (); return 0;

}}

Faz ‘*’ permanecer numa posição durante um t perceptível

O valor 20.000.000 para ‘demora’ é experimental

Esse valor pode variar com o computador

Page 11: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

Programa 6.3: Passeio do ‘*’ pelo vídeo-textoPrograma 6.3: Passeio do ‘*’ pelo vídeo-texto

#include <stdio.h>#include <stdio.h>

#include <conio.h>#include <conio.h>

#include <conio2.h>#include <conio2.h>

int main () {int main () {

int i, j, demora = 20000000;int i, j, demora = 20000000;

printf ("Maximize a tela e digite algo: "); printf ("Maximize a tela e digite algo: ");

getche (); clrscr ();getche (); clrscr ();

for (i = 10; i <= 60; i++) {for (i = 10; i <= 60; i++) {

gotoxy (i, 5); printf (" *");gotoxy (i, 5); printf (" *");

for (j = 1; j <= demora; j++);}for (j = 1; j <= demora; j++);}

for (i = 6; i <= 40; i++) {for (i = 6; i <= 40; i++) {

gotoxy (61, i-1); printf (" ");gotoxy (61, i-1); printf (" ");

gotoxy (61, i); printf ("*");gotoxy (61, i); printf ("*");

for (j = 1; j <= demora; j++);for (j = 1; j <= demora; j++);

}}

printf ("\n\nDigite algo para encerrar: ");printf ("\n\nDigite algo para encerrar: ");

getch (); return 0;getch (); return 0;

}}

Para i = 6, na coluna 61:

Escreve ‘ ’ na linha 5, apagando ‘*’

Escreve ‘*’ na linha 6

Dá a impressão de movimento do ‘*’ uma posição p/baixo

Para i = 40, ‘*’ vai para a linha 40

Page 12: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

Programa 6.3: Passeio do ‘*’ pelo vídeo-textoPrograma 6.3: Passeio do ‘*’ pelo vídeo-texto

#include <stdio.h>#include <stdio.h>

#include <conio.h>#include <conio.h>

#include <conio2.h>#include <conio2.h>

int main () {int main () {

int i, j, demora = 20000000;int i, j, demora = 20000000;

printf ("Maximize a tela e digite algo: "); printf ("Maximize a tela e digite algo: ");

getche (); clrscr ();getche (); clrscr ();

for (i = 10; i <= 60; i++) {for (i = 10; i <= 60; i++) {

gotoxy (i, 5); printf (" *");gotoxy (i, 5); printf (" *");

for (j = 1; j <= demora; j++);}for (j = 1; j <= demora; j++);}

for (i = 6; i <= 40; i++) {for (i = 6; i <= 40; i++) {

gotoxy (61, i-1); printf (" ");gotoxy (61, i-1); printf (" ");

gotoxy (61, i); printf ("*");gotoxy (61, i); printf ("*");

for (j = 1; j <= demora; j++);for (j = 1; j <= demora; j++);

}}

printf ("\n\nDigite algo para encerrar: ");printf ("\n\nDigite algo para encerrar: ");

getch (); return 0;getch (); return 0;

}}

Também faz ‘*’ permanecer numa posição durante um t perceptível

Page 13: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

Rotinas gráficas:Rotinas gráficas:

Rotinas gráficasRotinas gráficas são necessárias para vários são necessárias para vários programas profissionaisprogramas profissionais

A A Linguagem CLinguagem C padrão não define rotinas padrão não define rotinas gráficasgráficas

Foram criados independentemente vários Foram criados independentemente vários conjuntos de rotinas gráficas, tais como o conjuntos de rotinas gráficas, tais como o Microsoft C/C++Microsoft C/C++ para DOS e o para DOS e o Borland Borland Graphics InterfaceGraphics Interface ( (BGIBGI))

Nestas aulas será utilizado um Nestas aulas será utilizado um conjunto de conjunto de rotinasrotinas, elaborado pelo Prof. Carlos Henrique , elaborado pelo Prof. Carlos Henrique Quartucci Forster, conjunto esse que é uma Quartucci Forster, conjunto esse que é uma imitação da imitação da BGIBGI

Page 14: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

Instalação das rotinas gráficas no CodeBlocks:Instalação das rotinas gráficas no CodeBlocks:

Arquivos necessários Arquivos necessários (compactados em (compactados em winbgi.zipwinbgi.zip)): :

winbgi.h: winbgi.h: copiá-lo em copiá-lo em CodeBlocks\MingW\CodeBlocks\MingW\include include

winbgi.c: winbgi.c: guardá-lo em alguma pasta de sua guardá-lo em alguma pasta de sua biblioteca, para depois adicioná-lo ao projeto do biblioteca, para depois adicioná-lo ao projeto do programaprograma

Uso de projetos:Uso de projetos:

Para trabalhar em Para trabalhar em modo gráficomodo gráfico será necessário será necessário utilizar o conceito de utilizar o conceito de projeto projeto

ProjetoProjeto é um é um containercontainer que armazena todos os que armazena todos os elementos (elementos (arquivosarquivos) que compõem um programa) que compõem um programa

Page 15: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

Criando um novo projeto no ambiente Criando um novo projeto no ambiente CodeBlocks:CodeBlocks:

Clicar no menu Clicar no menu "File""File" e selecionar e selecionar "New""New", , "Project... ""Project... "

Escolher Escolher “Win32 GUI project"“Win32 GUI project" e clicar em e clicar em “Go”“Go”, , “Next”“Next”, , “Next”“Next”

Escolher um Escolher um títulotítulo para o projeto para o projeto Pode-se dar qualquer nome válido para um Pode-se dar qualquer nome válido para um

arquivo, por exemplo, arquivo, por exemplo, “FigurasGeometricas”“FigurasGeometricas”

Page 16: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

Criando um novo projeto no ambiente Criando um novo projeto no ambiente CodeBlocks:CodeBlocks:

Escolher uma pasta Escolher uma pasta onde salvaronde salvar o projeto clicar o projeto clicar em em “OK”“OK”

– Dentro dessa pasta será criada uma pasta com Dentro dessa pasta será criada uma pasta com o nome do projeto (por exemplo, o nome do projeto (por exemplo, FigurasGeometricasFigurasGeometricas) )

– Dentro dessa última será criado um arquivo Dentro dessa última será criado um arquivo com o nome do projeto, com extensão com o nome do projeto, com extensão .cbp .cbp (por exemplo, (por exemplo, FigurasGeometricas.cbpFigurasGeometricas.cbp))

Em seguida, clicar em Em seguida, clicar em “Next”“Next”, , “Finish”“Finish”

Page 17: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

Criando um novo projeto no ambiente Criando um novo projeto no ambiente CodeBlocks:CodeBlocks:

Na coluna Na coluna “Management”“Management” do ambiente do ambiente aparecerá o projetoaparecerá o projeto

Expandir Expandir “Sources”“Sources”

Clicar com o botão direito doClicar com o botão direito do

mouse em mouse em “main.cpp” “main.cpp” e e

removê-loremovê-lo

Page 18: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

Adicionando ao projeto arquivos existentes:Adicionando ao projeto arquivos existentes:

Duas formas:Duas formas:

Clicar no menu Clicar no menu "Project""Project" e selecionar e selecionar “Add “Add files...”files...”

Ou então, na coluna Ou então, na coluna “Management”“Management”, clicar com , clicar com o botão direito do mouse no nome do projeto e o botão direito do mouse no nome do projeto e clicar com o esquerdo em clicar com o esquerdo em “Add files...”“Add files...”

É só procurar os arquivos a serem adicionados e É só procurar os arquivos a serem adicionados e clicar nelesclicar neles

Para adicionar um novo arquivo contendo código Para adicionar um novo arquivo contendo código para o programa, deve-se para o programa, deve-se editá-loeditá-lo, , salvá-losalvá-lo e e adicioná-loadicioná-lo ao projeto ao projeto

Page 19: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

Usando a biblioteca gráfica no projeto:Usando a biblioteca gráfica no projeto:

Criado o projeto, deve-se adicionar a ele o Criado o projeto, deve-se adicionar a ele o arquivo arquivo “winbgi.c” “winbgi.c”

Ao editar o programa colocar Ao editar o programa colocar “include “include <winbgi.h>”<winbgi.h>” e também uma função e também uma função int mainint main com chamadas para funções gráficascom chamadas para funções gráficas

Page 20: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

Programa 6.4: Desenho simples no vídeo-Programa 6.4: Desenho simples no vídeo-gráficográfico

#include <stdio.h>#include <stdio.h>

#include <winbgi.h>#include <winbgi.h>

#include <conio.h>#include <conio.h>

int main () {int main () {

int left, top, bottom, right, i, j;int left, top, bottom, right, i, j;

start_graphics (); getch ();start_graphics (); getch ();

setbkcolor (LIGHTBLUE);setbkcolor (LIGHTBLUE);

cleardevice (); getch ();cleardevice (); getch ();

left = 160; right = 400; top = 80; bottom = 320;left = 160; right = 400; top = 80; bottom = 320;

for (i = top; i <= bottom; i++)for (i = top; i <= bottom; i++)

for (j = left; j <= right; j++)for (j = left; j <= right; j++)

putpixel (j, i, RED);putpixel (j, i, RED);

getch ();getch ();

closegraph ( );closegraph ( );

return 0;return 0;

}}

- Criar projeto- Adicionar este arquivo ao projeto- Adicionar winbgi.c ao projeto- Salvar e executar

Pede o número de colunas e linhas da janela gráfica a ser aberta, abrindo a em seguida

Colore o pixel [j, i] com a cor RED

Limpa a janela criada, colorindo-a com a cor de fundo corrente (LIGHTBLUE)

Page 21: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

Lista de cores disponíveis em winbgi.h:Lista de cores disponíveis em winbgi.h:

DARKGRAYDARKGRAY REDRED

GREENGREEN BLUEBLUE

MAGENTAMAGENTA YELLOWYELLOW

CYANCYAN LIGHTGRAYLIGHTGRAY

GRAYGRAY BLACKBLACK

WHITEWHITE LIGHTREDLIGHTRED

LIGHTGREENLIGHTGREEN LIGHTBLUELIGHTBLUE

LIGHTMAGENTALIGHTMAGENTA LIGHTYELLOWLIGHTYELLOW

LIGHTCYANLIGHTCYAN BROWNBROWN

LIGHTBROWNLIGHTBROWN DARKBROWNDARKBROWN

ORANGEORANGE LIGHTORANGELIGHTORANGE

Page 22: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

Programa 6.5: Desenho de várias figurasPrograma 6.5: Desenho de várias figuras

#include <stdio.h>#include <stdio.h>

#include <winbgi.h>#include <winbgi.h>

#include <conio.h>#include <conio.h>

int main () {int main () {

int left, top, bottom, right, i, j;int left, top, bottom, right, i, j;

/* Abrir janela grafica *//* Abrir janela grafica */

start_graphics(); getch ();start_graphics(); getch ();

setbkcolor(LIGHTBLUE);setbkcolor(LIGHTBLUE);

cleardevice();cleardevice();

Page 23: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

/* Colorir uma area quadrada de pixels *//* Colorir uma area quadrada de pixels */

getch ();getch ();

left = 160; right = 400; top = 80; bottom = 320;left = 160; right = 400; top = 80; bottom = 320;

for (i = top; i <= bottom; i++)for (i = top; i <= bottom; i++)

for (j = left; j <= right; j++)for (j = left; j <= right; j++)

putpixel (j, i, RED);putpixel (j, i, RED);

/* Desenhar as bordas de um quadrado *//* Desenhar as bordas de um quadrado */

getch ();getch ();

left = 160; right = 400; top = 80; bottom = 320;left = 160; right = 400; top = 80; bottom = 320;

setcolor (YELLOW); setlinestyle(SOLID_LINE,0,1);setcolor (YELLOW); setlinestyle(SOLID_LINE,0,1);

rectangle (left, top, right, bottom);rectangle (left, top, right, bottom);

/* Preencher um circulo *//* Preencher um circulo */

getch (); setcolor (YELLOW);getch (); setcolor (YELLOW);

setfillstyle(SOLID_FILL,YELLOW);setfillstyle(SOLID_FILL,YELLOW);

fillcircle (280, 200, 120);fillcircle (280, 200, 120);

Page 24: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

/* Desenhar as bordas de um circulo *//* Desenhar as bordas de um circulo */

getch (); setcolor (BLACK);getch (); setcolor (BLACK);

circle (280, 200, 120);circle (280, 200, 120);

/* Preencher uma elipse com eixos paralelos aos eixos /* Preencher uma elipse com eixos paralelos aos eixos coordenados */coordenados */

getch (); setcolor (LIGHTGRAY);getch (); setcolor (LIGHTGRAY);

setfillstyle(SOLID_FILL,LIGHTGRAY);setfillstyle(SOLID_FILL,LIGHTGRAY);

fillelipse (680, 400, 200, 150);fillelipse (680, 400, 200, 150);

/* Desenhar as bordas de uma elipse com eixos paralelos /* Desenhar as bordas de uma elipse com eixos paralelos aos eixos coordenados */aos eixos coordenados */

getch (); setcolor (RED);getch (); setcolor (RED);

elipse (680, 400, 200, 150);elipse (680, 400, 200, 150);

Page 25: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

/* Desenhar um segmento de reta *//* Desenhar um segmento de reta */

getch ();getch ();

setcolor (WHITE);setcolor (WHITE);

line (40, 480, 640, 80);line (40, 480, 640, 80);

/* Preencher um retangulo com textura e cor *//* Preencher um retangulo com textura e cor */

getch ();getch ();

left = 80; right = 560; top = 400; bottom = 450;left = 80; right = 560; top = 400; bottom = 450;

setcolor (DARKGRAY);setcolor (DARKGRAY);

setfillstyle(DOTTED_LINE, BROWN);setfillstyle(DOTTED_LINE, BROWN);

setlinestyle(DOTTED_LINE,0,1);setlinestyle(DOTTED_LINE,0,1);

bar (left, top, right, bottom);bar (left, top, right, bottom);

Page 26: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação

/* Preencher outro retangulo com textura e cor *//* Preencher outro retangulo com textura e cor */

getch ();getch ();

left = 100; right = 700; top = 500; bottom = 550;left = 100; right = 700; top = 500; bottom = 550;

setcolor (BLACK);setcolor (BLACK);

setfillstyle(SOLID_FILL, BROWN);setfillstyle(SOLID_FILL, BROWN);

setlinestyle(SOLID_LINE,0,5);setlinestyle(SOLID_LINE,0,5);

bar (left, top, right, bottom);bar (left, top, right, bottom);

/* Escrever um texto *//* Escrever um texto */

getch ();getch ();

outtextxy(150, 515, "Teste");outtextxy(150, 515, "Teste");

/* Fechar janela grafica *//* Fechar janela grafica */

getch ();getch ();

closegraph ( );closegraph ( );

return 0;return 0;

}}

Mais detalhes sobre rotinas gráficas:

Abrir os arquivos winbgi.h e winbgi.c

Consultar a Internet

Estas rotinas têm alguns defeitos:

outtextxy só escreve junto com o próximo desenho ou com o fechamento da tela

setlinestyle só desenha linha pontilhada com espessura mínima