1 / 26

CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014

CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014. Capítulo VI Desenhos e Animação. Arquivos fornecidos para a aula : CES10 Prat 6 2014. ppt : slides da aula lab_6_ces10_2014. doc : proposta do Lab 6

tommy
Télécharger la présentation

CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Arquivos fornecidos para a aula: • CES10 Prat 6 2014.ppt: slides da aula • lab_6_ces10_2014.doc: proposta do Lab 6 • conio2.zip: arquivos para a biblioteca conio2 a ser utilizada no CodeBlocks(Aba Códigos da página do prof); contém: • conio2.h e libconio.a • winbgi.zip: arquivos com rotinas gráficas a serem utilizadas no CodeBlocks(Aba Códigos da página do prof); contém: • winbgi.c e winbgi.h

  3. Instruções para usar o conio2 no CodeBlocks: • Adaptação de documento do Prof. Paulo André Lima de Castro • Copiar o arquivo conio2.h para C:\Arquivos de Programas (x86) \CodeBlocks\MingW\include • Copiar o arquivo libconio.a para C:\ Arquivos de Programas (x86) \CodeBlocks\MingW \lib • Abrir o CodeBlocks e entrar no menu Settings → Compiler

  4. Instruções para usar o conio2 no CodeBlocks: • Clicar no botão “LinkerSettings” • Abaixo do quadro “Link libraries”, clicar no botão “Add” • Escrever na janelinha “Addlibrary” o seguinte: libconio.a • No programa, colocar: #include <conio2.h> textbackground () – Seta a cor de fundo textcolor () – Seta a cor do texto clrscr () – Limpa a tela gotoxy () – Coloca o cursor em uma posição da tela Algumas funções do conio2:

  5. Copiar, salvar e executar clrscr (conio2.h): limpa 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> #include <conio2.h> int 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();} return 0; } Posiciona o cursor nas coordenadas desejadas – digitar um caractere Posiciona o cursor na coluna e linha 1 Limpa a 1ª linha \r: reescreve a 1ª linha da tela

  6. Copiar, salvar e executar Colunas variam de 1 a 80 Programa 6.2: Determinação dos limites do gotoxy #include <stdio.h> #include <conio.h> #include <conio2.h> int main () { int i, n; printf ("TESTE DO LIMITE DE LINHAS DO GOTOXY"); printf ("\n\n\tDigite o numero de linhas: "); scanf ("%d", &n); printf ("\nMaximize a tela e digite algo!"); getche (); clrscr (); for (i=1; i<=n; i++) { gotoxy ((i-1)%80+1, i); printf ("%d", i%10); } printf ("\nDigite algo para encerrar: "); getch (); return 0; } Valores escritos variam de 0 a 9 Experimentar os seguintes valores para n: 40, 53, 60, 80, 200, 300, 400 Qual o limite de linhas atingidas pelo gotoxy? Qual o número de linhas da tela maximizada?

  7. Limites no Borland (n = 80): Coluna 80 Linha 44

  8. Copiar, salvar e executar Programa 6.3: Passeio do ‘*’ pelo vídeo-texto #include <stdio.h> #include <conio.h> #include <conio2.h> int main () { int i, j, demora = 20000000; 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 (); return 0; }

  9. 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.3: Passeio do ‘*’ pelo vídeo-texto #include <stdio.h> #include <conio.h> #include <conio2.h> int main () { int i, j, demora = 20000000; 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 (); return 0; }

  10. Programa 6.3: Passeio do ‘*’ pelo vídeo-texto #include <stdio.h> #include <conio.h> #include <conio2.h> int main () { int i, j, demora = 20000000; 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 (); 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

  11. Programa 6.3: Passeio do ‘*’ pelo vídeo-texto #include <stdio.h> #include <conio.h> #include <conio2.h> int main () { int i, j, demora = 20000000; 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 (); 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

  12. Programa 6.3: Passeio do ‘*’ pelo vídeo-texto #include <stdio.h> #include <conio.h> #include <conio2.h> int main () { int i, j, demora = 20000000; 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 (); return 0; } Também faz ‘*’ permanecer numa posição durante um t perceptível

  13. 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á utilizado um conjunto de rotinas, elaborado pelo Prof. Carlos Henrique QuartucciForster, conjunto esse que é uma imitação da BGI

  14. Instalação das rotinas gráficas no CodeBlocks: • Arquivos necessários (compactados em winbgi.zip): • winbgi.h: copiá-lo em CodeBlocks\MingW\include • winbgi.c: guardá-lo em alguma pasta de sua biblioteca, para depois adicioná-lo ao projeto do programa • 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

  15. Criando um novo projeto no ambiente CodeBlocks: • Clicar no menu "File" e selecionar "New", "Project... " • Escolher “Win32 GUI project" e clicar em “Go”, “Next”, “Next” • Escolher um título para o projeto • Pode-se dar qualquer nome válido para um arquivo, por exemplo, “FigurasGeometricas”

  16. Criando um novo projeto no ambiente CodeBlocks: • Escolher uma pasta onde salvar o projeto clicar em “OK” • Dentro dessa pasta será criada uma pasta com o nome do projeto (por exemplo, FigurasGeometricas) • Dentro dessa última será criado um arquivo com o nome do projeto, com extensão .cbp(por exemplo, FigurasGeometricas.cbp) • Em seguida, clicar em “Next”, “Finish”

  17. Criando um novo projeto no ambiente CodeBlocks: • Na coluna “Management” do ambiente aparecerá o projeto • Expandir “Sources” • Clicar com o botão direito do mouse em “main.cpp” e removê-lo

  18. Adicionando ao projeto arquivos existentes: • Duas formas: • Clicar no menu "Project" e selecionar “Add files...” • Ou então, na coluna “Management”, clicar com o botão direito do mouse no nome do projeto e clicar com o esquerdo em “Add files...” • É só procurar os arquivos a serem adicionados e clicar neles • Para adicionar um novo arquivo contendo código para o programa, deve-se editá-lo, salvá-lo e adicioná-lo ao projeto

  19. Usando a biblioteca gráfica no projeto: • Criado o projeto, deve-se adicionar a ele o arquivo “winbgi.c” • Ao editar o programa colocar “include <winbgi.h>” e também uma função int main com chamadas para funções gráficas

  20. Programa 6.4: Desenho simples no vídeo-gráfico #include <stdio.h> #include <winbgi.h> #include <conio.h> int main () { int left, top, bottom, right, i, j; start_graphics (); getch (); setbkcolor (LIGHTBLUE); cleardevice (); 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); getch (); closegraph ( ); return 0; } - Criar projeto - Adicionar este arquivo ao projeto - Adicionar winbgi.c ao projeto - Salvar e executar Colore o pixel [j, i] com a cor RED Pede o número de colunas e linhas da janela gráfica a ser aberta, abrindo a em seguida Limpa a janela criada, colorindo-a com a cor de fundo corrente (LIGHTBLUE)

  21. Lista de cores disponíveis em winbgi.h: DARKGRAY RED GREEN BLUE MAGENTA YELLOW CYAN LIGHTGRAY GRAY BLACK WHITE LIGHTRED LIGHTGREEN LIGHTBLUE LIGHTMAGENTA LIGHTYELLOW LIGHTCYAN BROWN LIGHTBROWN DARKBROWN ORANGE LIGHTORANGE

  22. Programa 6.5: Desenho de várias figuras #include <stdio.h> #include <winbgi.h> #include <conio.h> int main () { int left, top, bottom, right, i, j; /* Abrir janela grafica */ start_graphics(); getch (); setbkcolor(LIGHTBLUE); cleardevice();

  23. /* 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 (); left = 160; right = 400; top = 80; bottom = 320; setcolor (YELLOW); setlinestyle(SOLID_LINE,0,1); rectangle (left, top, right, bottom); /* Preencher um circulo */ getch (); setcolor (YELLOW); setfillstyle(SOLID_FILL,YELLOW); fillcircle (280, 200, 120);

  24. /* Desenhar as bordas de um circulo */ getch (); setcolor (BLACK); circle (280, 200, 120); /* Preencher uma elipse com eixos paralelos aos eixos coordenados */ getch (); setcolor (LIGHTGRAY); setfillstyle(SOLID_FILL,LIGHTGRAY); fillelipse (680, 400, 200, 150); /* Desenhar as bordas de uma elipse com eixos paralelos aos eixos coordenados */ getch (); setcolor (RED); elipse (680, 400, 200, 150);

  25. /* 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 = 450; setcolor (DARKGRAY); setfillstyle(DOTTED_LINE, BROWN); setlinestyle(DOTTED_LINE,0,1); bar (left, top, right, bottom);

  26. 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 /* Preencher outro retangulo com textura e cor */ getch (); left = 100; right = 700; top = 500; bottom = 550; setcolor (BLACK); setfillstyle(SOLID_FILL, BROWN); setlinestyle(SOLID_LINE,0,5); bar (left, top, right, bottom); /* Escrever um texto */ getch (); outtextxy(150, 515, "Teste"); /* Fechar janela grafica */ getch (); closegraph ( ); return 0; } Mais detalhes sobre rotinas gráficas: Abrir os arquivos winbgi.h e winbgi.c Consultar a Internet

More Related