//Ejemplo de clases en C++

// Programa que hace que una linea recta se manipulada

#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<stdlib.h>
#include<dos.h>
#include<math.h>

class linea{
private:
int x,y,x1,y1;
int co;
public: void inicio(int a,int b,int c,int d)
{x=a;y=b;x1=c;y1=d;}
void color(int color)
{co=color;}
void horizoltal()
{
outtextxy(300,100,"MOVER EN X");
int sx,z;
while(1)
{
setcolor (0);
line(x-1,y,x1+1,y1);
setcolor(co);
line(x,y,x1,y1);
if(x1==600) sx=1; if(x==40) sx=0;
if(sx){x--;x1--;} else {x++;x1++;}
delay(1);
if(kbhit())
z=getch();
if(z==13)break;
}
}
void vertical()
{
outtextxy(300,100,"MOVER EN Y");
int sy,z;
while(1)
{
setcolor (co);
line(x,y,x1,y1);delay(5);setcolor(0);
line(x-1,y,x1+1,y1);
if(y1==360)sy=1; if(y==120)sy=0;
if(sy){y--;y1--;} else {y++;y1++;}
if(kbhit())
z=getch();
if(z==13)break;
}
}
void mostrar()
{
setcolor(co);outtextxy(300,100,"VISUALIZAR");
line(x,y,x1,y1);getch();
}
void desaparecer()
{
outtextxy(300,100,"OCULTAR");
unsigned p;
void *ptr;
ptr=malloc(p);
getimage(200,150,400,300,ptr);
setfillstyle(1,0);bar(200,150,400,300);getch();
putimage(200,100,ptr,0);
free(ptr);
}
void rotar()
{
setcolor (co);
outtextxy(220,380,"linea giratoria");
int coseno,seno;
for (int angulos=0;!kbhit();angulos++)
{
setfillstyle(1,0);bar (100,100,400,300);
coseno = 100 * cos (angulos * 3.1416 / 180);
seno = 100 * sin (angulos * 3.1416 / 180);
setcolor (co);
line (300,200,300+coseno,200-seno);
line (300,200,300-coseno,200+seno);
delay(25);
}
}
};

void main()
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:/tc/bgi");
linea chino;
chino.inicio (200,200,400,200); cleardevice();
chino.color (14); cleardevice();
chino.mostrar ( ); cleardevice();
chino.desaparecer ( ); cleardevice();
chino.horizoltal ( ); cleardevice();
chino.vertical ( ); cleardevice();
chino.rotar();
getch();
closegraph();
}