230 likes | 333 Views
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
E N D
CES-10 INTRODUÇÃO À COMPUTAÇÃOAulas 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)
Copiar, salvar e executar no Borland clrscr (conio.h): apaga a tela \r: reescreve a 1ª linha da tela Programa 6.1: Posicionamento do cursor no vídeo-texto #include <stdio.h> #include <conio.h> void main () { intcol, lin; char c; printf ("Maximize a tela e digite algo: "); getche (); clrscr (); printf ("Posicionar cursor? (s/n): "); c = getche(); while (c == 's' || c == 'S') { printf ("\rDigite a coluna e a linha: "); scanf ("%d%d", &col, &lin); gotoxy (col, lin); getche (); gotoxy (1, 1); printf (" "); printf ("\rPosicionar cursor? (s/n): "); c = getche(); } } Posiciona o cursor nas coordenadas desejadas – digitar um caractere Posiciona o cursor na coluna e linha 1 Apaga a 1ª linha \r: reescreve a 1ª linha da tela Para executar no Dev, devem ser copiados os arquivos referentes ao conio2.h
Copiar, salvar e executar no Borland Programa 6.2: Desenho de segmentos de retas com ‘*’ #include <stdio.h> #include <conio.h> 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 posição [a, b] Inicialmente [a, b] = [1, 1] A cada repetição a+=8 e b+=2 Na tela
Copiar, salvar e executar no Borland Programa 6.3: Determinação dos limites do gotoxy #include <stdio.h> #include <conio.h> 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
Copiar, salvar e executar no Borland 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 (" "); gotoxy (61, i); printf ("*"); for (j = 1; j <= demora; j++); } printf ("\n\nDigite algo para encerrar: "); getch (); }
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 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 (" "); 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: "); 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 (); } Faz ‘*’ permanecer numa posição durante um t perceptível O valor 100.000.000 para ‘demora’ é experimental Esse valor pode variar com o computador
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 (" "); gotoxy (61, i); printf ("*"); for (j = 1; j <= demora; j++); } printf ("\n\nDigite algo para encerrar: "); getch (); } 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
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 (" "); gotoxy (61, i); printf ("*"); for (j = 1; j <= demora; j++); } printf ("\n\nDigite algo para encerrar: "); getch (); } Também faz ‘*’ permanecer numa posição durante um t perceptível
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 -lcomdlg32 -luuid -loleaut32 -lole32 Clicar OK
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++) for (j = left; j <= right; j++) putpixel (j, i, MAGENTA); getch (); closegraph ( ); } - Criar projeto - Adicionar este arquivo ao projeto - Configurar o projeto para o uso da BGI - Salvar e executar
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++) for (j = left; j <= right; j++) putpixel (j, i, MAGENTA); getch (); closegraph ( ); } Colore o pixel [j, i] com a cor MAGENTA Abre uma janela com título, de 700 colunas e 500 linhas
Programa 6.6: Desenho de várias figuras #include <stdio.h> #include <graphics.h> int main () { int i, 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