Prof.: José Eustáquio Rangel de Queiroz [email protected] rangeldequeiroz@gmail

97
DSC/CCT/UFCG {joseana, rangel}@dsc.ufcg.edu.br Carga Horária: 60 horas Prof.: José Eustáquio Rangel de Queiroz [email protected] [email protected]

description

Gráficos em C usando. o Turbo C++ 3.0. Técnicas de Programação. Prof.: José Eustáquio Rangel de Queiroz [email protected] [email protected]. Carga Horária: 60 horas. Tela de Texto. 25 linhas e 80 colunas de caracteres textuais 80 colunas x 25 linhas = 2.000 posições - PowerPoint PPT Presentation

Transcript of Prof.: José Eustáquio Rangel de Queiroz [email protected] rangeldequeiroz@gmail

Informática na Educaçã[email protected]
[email protected]
80 colunas x 25 linhas = 2.000 posições
Tela consistindo de pixels (picture elements) para a representação de caracteres textuais e símbolos
{joseana, rangel}@dsc.ufcg.edu.br
Indicação para o compilador dos comandos gráficos a serem usados
Identificação do tipo de placa gráfica em uso no computador
Inicialização do modo gráfico (Tela Gráfica)
Indicação para o sistema do local no qual estão os drivers e fontes gráficas (BGI)
Encerramento do modo gráfico após a finalização do traçado gráfico
{joseana, rangel}@dsc.ufcg.edu.br
Indicação para o compilador dos comandos gráficos a serem usados
Inclusão da diretiva de compilação
#include <graphics.h>
Identificação do tipo de placa gráfica em uso no computador
Declaração de duas variáveis do tipo integer
int gdriver = DETECT, gmodo;
Utilização do Modo Gráfico
Inicialização do modo gráfico (Tela Gráfica) e indicação para o sistema do local no qual se encontram os drivers e fontes gráficas (BGI)
Invocação da função initgraph() pela função main( )
initgraph(&gdriver, &gmodo, “C:\\tc\\bgi”);
{joseana, rangel}@dsc.ufcg.edu.br
Encerramento do modo gráfico após a finalização do traçado gráfico
Uso recomendado da função getch() após a(s) chamada(s) à(s) função(ões) gráfica(s) de interesse
Manutenção do traçado na tela (Pressionar qualquer tecla para continuar)
Necessidade de inclusão da diretiva
#include <conio.h>
Encerramento do modo gráfico após a finalização do traçado gráfico
Invocação da função closegraph() para encerramento do modo gráfico
{joseana, rangel}@dsc.ufcg.edu.br
Possíveis dificuldades
Não funcionamento de funções gráficas por conta da dependência de hardware do ambiente gráfico (Limitações na portabilidade do software escrito em C para processamento gráfico)
Insucesso no processo de “atrelagem” da biblioteca gráfica à codificação de programas
{joseana, rangel}@dsc.ufcg.edu.br
Utilização do Modo Gráfico
Não funcionamento de funções gráficas por conta da dependência de hardware
Análise cuidadosa das funções gráficas usadas em programas escritos por outros programadores e passíveis de uso para processamento gráfico de interesse
Inspeção tanto das configurações do hardware gráfico a ser emulado pelos programas quanto da compatibilidade do código (léxica, sintática, estrutural) com o Turbo C++ 3.0
{joseana, rangel}@dsc.ufcg.edu.br
Utilização do Modo Gráfico
Não funcionamento de funções gráficas por conta da dependência de hardware
Codificação com instruções, sempre que possível, de identificação automática de equipamentos instalados e modos de funcionamento do hardware emulado pela aplicação
{joseana, rangel}@dsc.ufcg.edu.br
Utilização do Modo Gráfico
Insucesso no processo de “atrelagem” da biblioteca gráfica à codificação de programas
Verificação passo-a-passo da execução correta de todos os procedimentos anteriormente explicitados
Adoção de outra estratégia de inicialização do modo gráfico
{joseana, rangel}@dsc.ufcg.edu.br
Se a biblioteca gráfica se encontrar no diretório-padrão
Introdução na linha de comando da instrução
tcc nome_do_programa.ext graphics.lib
{joseana, rangel}@dsc.ufcg.edu.br
Utilização do Modo Gráfico
Estratégia sugerida pela Borland
Distribuição do código criado com o Turbo C++ 3.0 sem necessidade de inclusão do arquivo extras à aplicação (I)
Necessidade de conversão do arquivo EGAVGA.BGI em um arquivo-objeto (.OBJ)
C:\TC\BGI>BGIOBJ EGAVGA
A criação correta implica a indicação do nome público do driver (EGAVGA_driver)
{joseana, rangel}@dsc.ufcg.edu.br
Utilização do Modo Gráfico
Estratégia sugerida pela Borland
Distribuição do código criado com o Turbo C++ 3.0 sem necessidade de inclusão do arquivo extras à aplicação (II)
Necessidade de conversão do(s) arquivo(s) de fonte(s) de texto (e.g. GOTH.CHR) em arquivo(s)-objeto(s) (.OBJ)
C:\TC\BGI>BGIOBJ GOTH
A criação correta implica a indicação do nome público da fonte (GOTHIC_font)
{joseana, rangel}@dsc.ufcg.edu.br
Utilização do Modo Gráfico
Estratégia sugerida pela Borland
Distribuição do código criado com o Turbo C++ 3.0 sem necessidade de inclusão do arquivo extras à aplicação (III)
Necessidade de criação de um projeto
Inclusão da aplicação, do arquivo-objeto do driver (e.g. EGAVGA.OBJ) e do(s) arquivo(s)-objeto(s) da(s) fonte(s) de texto (e.g. GOTH.OBJ) necessário(s) ao contexto da aplicação
{joseana, rangel}@dsc.ufcg.edu.br
Utilização do Modo Gráfico
Estratégia sugerida pela Borland
Distribuição do código criado com o Turbo C++ 3.0 sem necessidade de inclusão do arquivo extras à aplicação (IV)
Registro dos dispositivos e fontes ANTES da inicialização do modo gráfico
Inclusão das linhas de código (à aplicação)
registerbgidriver(nomepublico_driver);
registerbgifont(nomepublico_fonte);
Utilização do Modo Gráfico
Estratégia sugerida pela Borland
Distribuição do código criado com o Turbo C++ 3.0 sem necessidade de inclusão do arquivo extras à aplicação (V)
Compilação do projeto
Execução da aplicação
Distribuição da aplicação SEM inclusão de arquivos adicionais
{joseana, rangel}@dsc.ufcg.edu.br
Fundamentos de Gráficos
Existência de uma placa gráfica VGA ou superior no computador
Tela Gráfica com (640 x 480) pixels (pelo menos)
640 X 480 = 307.200 pixels
Posição do canto superior esquerdo (0, 0)
Posição do canto inferior direito (639, 479)
{joseana, rangel}@dsc.ufcg.edu.br
Opções de Cor de Fundo
Possibilidade de seleção da cor do fundo da tela (background color)
Função para a seleção da cor do fundo da tela
setbkcolor(numero)
numero constante numérica entre 0 e 15 ou constante simbólica representante da cor (e.g. BLACK)
{joseana, rangel}@dsc.ufcg.edu.br
Opções de Cores
Número de cores Modo gráfico selecionado usando o Turbo C++
Paleta default 16 opções de cores
Função para a seleção de uma cor para o traçado gráfico (foreground color)
setcolor(number)
{joseana, rangel}@dsc.ufcg.edu.br
{joseana, rangel}@dsc.ufcg.edu.br
#include <graphics.h>
#include <stdio.h>
#include <stdlib.h>
#include <process.h>
#include <conio.h>
char mcol[5];
char *nomedriver;
"Vermelho","Magenta","Marrom","Cinza-claro",
"Cinza-escuro","Azul-claro","Verde-claro","Ciano-claro",
"Vermelho-claro","Magenta-claro","Amarelo","Branco"};
int xasp, yasp, maxx, maxy, ptam, i, dy, dx;
double razao;
errorcode=registerbgidriver(EGAVGA_driver);
printf("Pressione uma tecla para parar!");
getch();
exit(1);
outtextxy(0,dy,"Driver Grafico:");
/* Determinacao da proporcao */
getaspectratio(&xasp, &yasp);
itoa(xasp, s1, 10);
itoa(yasp, s2, 10);
outtextxy(0,dy*2,"Proporcao (x:y):");
outtextxy(dx,dy*3,getmodename(gmode));
outtextxy(0, dy*4, "A cor de fundo corrente eh:");
outtextxy(dx, dy*4, logcor[getbkcolor()]);
/* Determinacao da cor de desenho corrente */
outtextxy(0, dy*5, "A cor de desenho corrente eh:");
outtextxy(dx, dy*5, logcor[getcolor()]);
ptam=getpalettesize();
outtextxy(0, dy*6, "Numero maximo de cores de desenho:");
outtextxy(dx, dy*6, mcol);
for(i=0; i<16; i++){
setfillstyle(SOLID_FILL, i);
bar(dx, dy*(i+7), dx+10, dy*(i+7)+10);
moveto(dx+15, dy*(i+7));
outtext(logcor[i]);
/* Demonstracao do uso da linguagem C para o tracado
de graficos. Exemplo de tracado da curva da funcao
cossenoidal modulada em amplitude (AM)
y=(a*cos(b*3.1415*x/360)*c*sin(b*3.1415*x*50/360))
com possibilidade de alteracao dos valores de a, b e c
e efeitos de deslocamento para a esquerda/direita e
para cima/baixo (pan) e reducao/ampliacao (zoom
in/out) da curva durante a visualizacao. */
#include <graphics.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
/* Possibilidade de alteracao de valores da resolucao de
tela */
coordenadas */
float matfunc(float);
como coeficientes para qualquer funcao cujo tracado
se deseja. Quaisquer atribuicoes em main() e
definicao da funcao em matfunc() */
{joseana, rangel}@dsc.ufcg.edu.br
float a,b,c,d,e,f,g,h,i,j;
{
{
}
/* Armazenamento das instrucoes de visualizacao do
grafico */
"r - REDUCAO da amplitude",
"c - deslocamento do eixo p/ CIMA",
"b - deslocamento do eixo p/ BAIXO",
"- - REDUCAO no eixo das ordenadas",
"+ - AMPLIACAO no eixo das ordenadas",
"< - REDUCAO no eixo das abcissas",
"> - AMPLIACAO no eixo das abcissas",
"z - ZOOM default (inicial)"};
'modo' em funcao da alteracao de MAXX e MAXY */
{joseana, rangel}@dsc.ufcg.edu.br
float xb,xe,yb,ye,x,y,potx,poty;
char tecla;
a = 1;
b = 1;
c = 2;
xb = -360;
xe = 360;
yb = -10;
ye = 10;
/* Tracado dos eixos X e Y */
setcolor(1);
line(0,tela_y(yb,0,ye),MAXX,tela_y(yb,0,ye));
line(tela_x(xb,0,xe),0,tela_x(xb,0,xe),MAXY);
setcolor(15);
strcpy(estilostr, menu[m]);
/* Apresentacao do menu */
}
for(x=xb;x<=xe;x+=(xe-xb)/MAXX)
{
++a;
break;
--a;
break;
xb -= (xe-xb)/4.0;
xe -= (xe-potx)/4.0;
xb += (xe-xb)/4.0;
xe += (xe-potx)/4.0;
yb += (ye-yb)/4.0;
ye += (ye-poty)/4.0;
yb -= (ye-yb)/4.0;
ye -= (ye-poty)/4.0;
yb -= (yb-ye)/4.0;
ye += (poty-ye)/4.0;
yb += (yb-ye)/4.0;
ye -= (poty-ye)/4.0;
xb += (xb-xe)/4.0;
xe -= (potx-xe)/4.0;
xb -= (xb-xe)/4.0;
xe += (potx-xe)/4.0;
yb -= (yb-ye)/4.0;
ye += (poty-ye)/4.0;
yb += (yb-ye)/4.0;
ye -= (poty-ye)/4.0;
xb += (xb-xe)/4.0;
xe -= (potx-xe)/4.0;
xb -= (xb-xe)/4.0;
xe += (potx-xe)/4.0;
case ‘z': /* Visualizacao inicial */
/* Teste de teclas */
if((tecla=='e')||(tecla=='[')||(tecla==']')||
(tecla=='/')||(tecla=='r'))
strcpy(estilostr, menu[m]);
/* Apresentacao do menu */
}
}
else if(tecla=='d')
}
}
}
}
else if(tecla=='c')
}
}
setcolor(14);
moveto(0,tela_y(yb,matfunc(xb),ye));
return;
Entidade de apontamento invisível Rastreio da posição corrente do pixel
Equivalente ao cursor visível no modo texto
Função para o deslocamento do apontador para uma locação no gráfico (sem traçado algum)
void far moveto (int x, int y);
{joseana, rangel}@dsc.ufcg.edu.br
Traçado de Linhas II
Função para o traçado de linhas da posição corrente do apontador até outro ponto no gráfico
void far lineto(int x, int y);
Possibilidade de substituição de moveto e lineto pela função
void far line(int x1, int y1, int x2, int y2);
(x1, y1) início da linha
(x2, y2) término da linha
{joseana, rangel}@dsc.ufcg.edu.br
Série de funções para traçado de retângulos (de diferentes modos)
void far lineto(int x, int y);
void far moveto(int x, int y);
void far moverel(int dx, int dy);
void far linerel(int dx, int dy);
{joseana, rangel}@dsc.ufcg.edu.br
Rectângulos II
Função para traçado direto de um retângulo na cor e estilo de linha default
void far rectangle(int x1, int y1, int x2, int y2);
(x1, y1) canto superior esquerdo
(x2, y2) canto inferior direito
(x1, y1)
(x2, y2)
Círculos
Função para traçado de um círculo na cor e estilo de linha default
void far circle(int x, int y, int r);
(x, y) centro do círculo
r raio do círculo
Arcos
Função para traçado de um arco na cor e estilo de linha default
void far arc(int x, int y, int ai, int af, int r);
(x, y) centro do arco
ai ângulo inicial
af ângulo final
Elipses
Função para traçado de uma elipse na cor e estilo de linha default
void far ellipse(int x, int y, int ai, int af, int xr, int yr);
(x, y) centro da elipse
ai ângulo inicial
af ângulo final
{joseana, rangel}@dsc.ufcg.edu.br
Traçado de Pontos (Pixels)
Funções para a determinação dos máximos valores de x e y para o traçado de um ponto (x, y)
int far getmaxx(void)
int far getmaxy(void)
Função para o traçado de um ponto de coordenadas (x, y) em um dada cor
void far putpixel (int x, int y, int cor);
{joseana, rangel}@dsc.ufcg.edu.br
Configuração de uma Linha
TODAS as linhas são traçadas no Turbo C++ 3.0 no modo default de linha
Possibilidade de especificação de três atributos pelo usuário: estilo, padrão e espessura
Sintaxe da função para configuração de atributos de linhas
void far setlinestyle (int style, unsigned pattern, int thickness);
{joseana, rangel}@dsc.ufcg.edu.br
Estilos de Linhas
{joseana, rangel}@dsc.ufcg.edu.br
Padrões de Linhas
Padrão
Palavra de 16 bits aplicável APENAS se o estilo da linha for USERBIT_LINE (4)
Caso o seja, SEMPRE que um bit na palavra do padrão for 1, o pixel correspondente na linha é traçado na cor corrente
Caso contrário, MESMO QUE um valor seja atribuído ao parâmetro padrão, este não terá NENHUM efeito no traçado da linha
{joseana, rangel}@dsc.ufcg.edu.br
Padrões de Linhas
Exemplos
Uma linha sólida corresponde a um padrão de 0xFFFF (TODOS os pixels traçados)
Uma linha tracejada poderá corresponder a um padrão de 0x3333 ( ) ou 0x0F0F ( )
{joseana, rangel}@dsc.ufcg.edu.br
Espessuras de Linhas
char *lnome[] = {"SOLID_LINE","DOTTED_LINE","CENTER_LINE",
char *lnome1[] = {"USERBIT_LINE1","USERBIT_LINE2","USERBIT_LINE3",
locais*/
int i, estilo, midx, midy, padrao;
char estilostr[40], estilostr1[40];
/* Inicialização do modo gráfico */
coderro = graphresult();
{
getch();
midx = getmaxx() / 2;
midy = getmaxy() / 2;
/* Variação da cor e extensão de uma linha */ for(i=1;i<=15;i++){
setcolor(i);
for(i=1;i<=15;i++){
for(i=1;i<=15;i++){
/* Variação das cores de borda e de preenchimento de um
retângulo 3D */
padrao = 0x8888;
{ /* Selecao do estilo da linha */
setlinestyle(estilo, padrao, 1);
strcpy(estilostr, lnome[estilo]);
/* Apresentacao de mensagem */
outtextxy(midx, midy, estilostr);
cleardevice();
estilo=SOLID_LINE;
while(estilo<=USERBIT_LINE)
setlinestyle(estilo, padrao, 1);
strcpy(estilostr, lnome[estilo]);
/* Tracado de linha */
midy-100 + 20*estilo);
/* Apresentacao de mensagem */
estilo++;
delay(100);
else setlinestyle(USERBIT_LINE, padrao<<3*i,3);
/* Conversao do estilo em string */
strcpy(estilostr1, lnome1[i-1]);
/* Tracado da linha */
/* Apresentacao de mensagem */
delay(100);
return 0;
Preenchimento de Regiões
Aquisição de Pixels
{joseana, rangel}@dsc.ufcg.edu.br
Seleção de Padrões e Cores
Função para a configuração do padrão e da cor de um objeto a ser preenchido graficamente
void far setfillstyle(int padrao, int cor);
Função para a configuração de um padrão de preenchimento definido pelo usuário
NÃO atribuir o valor 12 (USER_FILL) ao parâmetro padrao da função setfillstyle
Invocar
{joseana, rangel}@dsc.ufcg.edu.br
Padrões de Preenchimento
{joseana, rangel}@dsc.ufcg.edu.br
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
char *fnome[] = {"EMPTY_FILL","SOLID_FILL", "LINE_FILL","LTSLASH_FILL","SLASH_FILL",
"BKSLASH_FILL P25","LTBKSLASH_FILL P25",
"CLOSE_DOT_FILL P25","USER_FILL P25"};
{joseana, rangel}@dsc.ufcg.edu.br
int main(void)
locais*/
int i, j, estilo, midx, midy, padrao;
/* Padrao de preenchimento definido pelo usuario */
char padrao1[8] = {0x00,0x00,0x00,0x00,0xF0,0xF0,
/* Inicialização do modo gráfico */
coderro = graphresult();
if (coderro != grOk) /* Ocorrencia de erro */
{
getch();
for (estilo = EMPTY_FILL; estilo < USER_FILL; estilo++)
{
setfillstyle(estilo, estilo+3);
strcpy(estilostr, fnome[estilo]);
{joseana, rangel}@dsc.ufcg.edu.br
/* Configuracao da cor da borda do desenho */
setcolor(estilo+3);
/* Apresentacao de mensagem */
outtextxy(midx, midy, estilostr);
cleardevice(); /* Apagamento da tela */
for (estilo = EMPTY_FILL; estilo < USER_FILL; estilo++)
{ /* Selecao de estilo de linha */
setfillstyle(estilo, estilo+3);
strcpy(estilostr1, fnome1[estilo]);
setcolor(estilo+3);
/* Apresentacao de mensagem */
outtextxy(midx, midy, estilostr1);
cleardevice(); /* Apagamento da tela */
for (i = 1; i < 15; i++) {
/* Configuracao da cor da borda do desenho */
setcolor(15-i);
padrao1[j] =
}
pelo usuario */
setfillpattern(padrao1, 15-i);
bar3d(50, 50, midx-10, midy, 25, 1);
delay(2000); /* Retencao do tracado na tela */
cleardevice(); /* Apagamento da tela */
return 0;
Preenchimento de Regiões I
Função para o preenchimento de uma região com um padrão e uma cor
void floodfill (int x, int y, int cor);
(x, y) ponto “semente” situado no interior da região a ser “inundada” por uma dada cor
cor cor da borda da região
{joseana, rangel}@dsc.ufcg.edu.br
Preenchimento de Regiões II
Função para o preenchimento de uma região com um padrão e uma cor
Recomendação
Uso da função fillpoly ao invés de floodfill SEMPRE que possível Manutenção da compatibilidade de código com versões mais recentes
floodfill NÃO é compatível com o driver IBM-8514
{joseana, rangel}@dsc.ufcg.edu.br
Preenchimento de Regiões III
Função para o preenchimento de uma região com um padrão e uma cor
Sintaxe da função fillpoly
void far fillpoly(int np, int far *pp);
np número de pontos da borda do polígono a ser preenchido
pp apontador para uma seqüência de np*2 inteiros, na qual cada par de inteiros fornece as coordenadas x e y de um ponto do polígono
{joseana, rangel}@dsc.ufcg.edu.br
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void)
int i, maxx, maxy;
initgraph(&gdriver, &gmodo, "");
getch();
exit(1);
maxx = getmaxx();
maxy = getmaxy();
poligono[1] = maxy/2;
poligono[3] = 200;
poligono[5] = maxy/3;
automatico */
/* Laco para configuracao de padroes de preenchimento */
for (i=EMPTY_FILL; i<USER_FILL; i++) {
setcolor(i);
fillpoly(4, poligono); /* Tracado de um poligono
preenchido */
delay(1000);
cleardevice();
(x, y) ponto central da elipse
xr raio horizontal da elipse
yr raio vertical da elipse
(x, y)
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void)
int xradius = yradius = 40;
int midx, midy, i;
getch();
exit(1);
midx = getmaxx()/8;
midy = getmaxy()/8;
setcolor(i);
setfillstyle(i,i);
fillellipse(midx*i/2, midy*i/2, xradius*i*i/(3+2*i),
yradius*i*i/(4+i*i));
delay(1000);
cleardevice();
Preenchimento de Regiões V
Função para o traçado e preenchimento de uma “fatia de pizza” (pieslice)
void pieslice(int x, int y, int ai, int af, int r);
(x, y) ponto central da “fatia de pizza”
ai ângulo inicial da fatia
af ângulo final da fatia
r raio da fatia
#include #include <graphics.h>
int midx, midy;
int ai = 0, af = 0, i = 0, j = 0, raio = 100, cor = 1;
initgraph(&gdriver, &gmodo, "");
getch();
exit(1);
midx = getmaxx()/2;
midy = getmaxy()/2;
while(i<6)
pieslice(midx, midy, ai, af, raio);
delay(2);
for(af=360;af>=0;af-=2)
delay(2);
Função para o traçado e preenchimento de uma barra retangular
void bar(int e, int c, int d, int b);
(e, c) coordenadas do pixel do canto superior esquerdo da barra
(d, b) coordenadas do pixel do canto inferior direito da barra
(e, c)
(d, b)
Preenchimento de Regiões VII
Função para o traçado e preenchimento de uma barra retangular tridimensional
void bar3d(int e, int c, int d, int b, int p, int t);
(e, c) coordenadas do pixel do canto superior esquerdo da barra
(d, b) coordenadas do pixel do canto inferior direito da barra
p profundidade da barra
t topflag (controla se um topo 3D será incorporado à barra)
{joseana, rangel}@dsc.ufcg.edu.br
Apresentação de Texto na tela Gráfica
Função para a escrita de expressões literais na tela gráfica, a partir de uma locação especificada por um par de coordenadas
void outtextxy (int x, int y, char *string);
Manutenção da compatibilidade do código em face do uso de várias fontes de texto
Uso das funções textwidth e textheight para a determinação das dimensões da string
{joseana, rangel}@dsc.ufcg.edu.br
Configuração de Texto
Função para a configuração de valores para os atributos do texto visualizado em tela gráfica
void settextstyle(int fnt, int dir, int tc);
fnt estilo da fonte de texto
dir direção da fonte Horizontal (da esquerda para a direita) e Vertical (rotacionada 90° no sentido anti-horário)
tc tamanho do caractere visualizado em tela
{joseana, rangel}@dsc.ufcg.edu.br
{joseana, rangel}@dsc.ufcg.edu.br
Tamanho de Caracteres
{joseana, rangel}@dsc.ufcg.edu.br
Apagamento da Tela
Modo gráfico em uso
{joseana, rangel}@dsc.ufcg.edu.br
Aquisição e Traçado de Pixels
Função para a aquisição da cor de um pixel localizado nas coordenadas (x, y)
unsigned getpixel(int x, int y);
Função para o traçado de um pixel de uma dada cor nas coordenadas (x, y)
void putpixel(int x, int y, int cor);
{joseana, rangel}@dsc.ufcg.edu.br
Funções Não Gráficas Úteis
int kbhit(void); /* include <conio.h> */
Verificação a existência de um caractere no buffer de entrada pronto para leitura
Em caso afirmativo Retorno de um inteiro não nulo (V)
Caso contrário Retorno de zero (F)
{joseana, rangel}@dsc.ufcg.edu.br
Funções Não Gráficas Úteis
int getch(void); /* include <conio.h> */
Leitura de um caractere do teclado e retorno de seu valor ASCII (sem espera de um ENTER)
{joseana, rangel}@dsc.ufcg.edu.br
{joseana, rangel}@dsc.ufcg.edu.br
Joseana Macêdo Fechine
4
4
3
3
2
2
1
1
0
0