24 de marzo de 2010

Dibujando a GARU en C con Graphics.h

Ejemplo de Gráficos en C
  • Dificultad: Intermedio - Avanzado
  • Tiempo: 1:30 min
  • Nombre: Garu-Puca
  • Compilador: Turbo C 3
Este es un ejemplo de dibujo de graficos utilizando el Modo Gráfico de Turbo C con la librería Graphics.h. El ejemplo consiste en dibujar lineas con las funcione de dibujo como: line(), lineto(), rectangle(), circle(), ellipse(), arc() y otros, y luego para definir los estilos de línea de texto y de relleno usamos settextline() settextstyle setfillstyle(). Veamos el código:

#include<conio.h>
#include<graphics.h>
#include<stdio.h>
#include<stdlib.h> //Function exit


void grosor(int i)
{
setlinestyle(0,0,i);
}
void main()
{
struct palettetype pal;
int i;
int Controlador=DETECT, Modo;
initgraph(&amp;Controlador, &amp;Modo, "c:\\tc\\bgi");
if (graphresult() != grOk)
 {
 puts("Error en modo grafico, no se puede continuar");
 getch();
 exit(0);
 }
 


getpalette(&amp;pal);

setrgbpalette(pal.colors[RED], 255,0,0);
setrgbpalette(pal.colors[7], 20, 20, 20); //gris
setrgbpalette(pal.colors[10], 255, 170, 100); //rojo oscuro
setrgbpalette(pal.colors[3], 160,0,0);

setcolor(15);
grosor(3);
ellipse(254,184,0,360,166,134);
ellipse(254,202,0,360,143,116);
setcolor(15);
circle(165,202,37); //jo
circle(345,202,37); //ojo

grosor(3);
line(232,265,276,265); //boca

setcolor(15);
line(338,300,398,347); //hombro
line(170,300,110,347); //hombro

ellipse(254,245,244,296,220,156); //cintura
line(254,402,254,454); //div_pierna

line(321,308,349,387); //brazo der 
line(187,308,159,387); //brazo izq

line(398,347,349,387); //muñeca der
line(110,347,159,387); //muñeca izq
arc(378,372,200,60,32); //mano der
arc(130,372,115,335,32); //mano izq

setfillstyle(1,3);
floodfill(130,372,15);
floodfill(378,372,15);

line(254,346,254,394); //pecho

line(329,392,339,444); //pierna-fuera der
line(179,392,169,444); //pierna-fuera izq

grosor(1);
rectangle(258,356,273,368); //bolsillo-der
rectangle(250,356,235,368); //bolsillo-izq

setfillstyle(1,10);
circle(264,346,6); //boton_abj der
circle(244,346,6); //boton_abj der
floodfill(264,346,15);
floodfill(244,346,15);

circle(276,331,6); //boton_arr der
circle(232,331,6); //boton_arr izq
floodfill(276,331,15);
floodfill(232,331,15);
grosor(3);


ellipse(254,298,210,330,18,40); //sombra cuello

ellipse(217,435,194,319,50,30); //pie izq
ellipse(291,435,220,343,50,30); //pie der

arc(288,457,190,345,22); //point
arc(220,457,195,350,22); //point 

setfillstyle(1,15);
circle(165,202,11); //pupila izq
floodfill(165,216,15);
circle(345,202,11); //pupila der
floodfill(345,216,15);

setfillstyle(1,10);
floodfill(232,260,15);//pinta al cara

setcolor(BLACK);
ellipse(254,202,0,360,143,116); //cara
circle(165,202,37); //jo
circle(345,202,37); //ojo
grosor(4);
line(131,145,201,179); //ceja
line(377,145,307,179); //ceja
grosor(4);
setcolor(15);

setcolor(15);
ellipse(254,184,0,360,166,134);
setfillstyle(1,RED);
moveto(118,110);
lineto(84,102);
lineto(18,125);
lineto(36,95);
lineto(0,86);
lineto(36,62);
lineto(12,25);   //pelo izquierda
lineto(60,40);
lineto(60,0);
lineto(103,64);
lineto(139,88);
line(84,102,103,64);
line(125,78,108,107);

floodfill(105,70,15);

moveto(391,109);
lineto(424,102);
lineto(490,125);
lineto(472,95);
lineto(508,86);
lineto(472,62);
lineto(496,25);
lineto(448,40);
lineto(448,0);
lineto(405,64);
lineto(370,87);
line(424,102,405,64);
line(383,78,403,107);
floodfill(410,100,15);

setfillstyle(1,7);
floodfill(254,320,15);//pinta cuello

settextstyle(5,0,4);

outtextxy(230,0,"Feliz");
outtextxy(450,180,"dia de");

outtextxy(231,0,"Feliz");
outtextxy(451,180,"dia de");

settextstyle(5,0,5);
outtextxy(380,250,"San Valentin");
outtextxy(381,250,"San Valentin");

getch();
}


DESCARGAR EJEMPLO.

6 comentarios:

Anónimo,  marzo 31, 2010  

Muy detallado tu grafico...
pero no entiendo la funcion getpalettecolor

toneck crunch ¬_¬ ñ_ñ abril 15, 2010  

ola no se puede hacer el monito en turbo c++4.5

Anónimo,  abril 24, 2010  

esta hecho en turbo c 3... funciona perfectamente

Anónimo,  mayo 18, 2010  

excelente man...muy ingenioso...increible tb...

MALANDRO marzo 11, 2011  

perfecto muy buen ejemplo.

Anónimo,  mayo 19, 2011  

Realmente que ingenioso jejeje

De verdad que esto esta bien para pasar un rato tratando de aprender geometria y programacion

Y disculpa pero lo del monito creo que podrias hacer solo lo que tu imaginacion te permita :D