NOTE: Please change the path of initgraph() function as per your system's BGI directory.
and click here to get mouse.C file and paste it to your bin folder before running the program below.
Output:
Code begins here:
and click here to get mouse.C file and paste it to your bin folder before running the program below.
Output:
Code begins here:
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include"mouse.c"
#include<dos.h>
#include<math.h>
float x1=320,y1=140;
float x2,y2;
//to dsiplay the buttons and clock with one hand
void display()
{
showmouseptr();
setcolor(LIGHTRED);
outtextxy(160,70,"Click the buttons to perform respective actions...");
setcolor(GREEN);
rectangle(100,5,200,50);
outtextxy(120,22,"clockwise");
setcolor(LIGHTBLUE);
rectangle(250,5,370,50);
outtextxy(260,22,"anticlockwise");
setcolor(RED);
rectangle(400,5,500,50);
outtextxy(430,22,"reset");
setcolor(CYAN);
circle(320,240,100);
line(320,240,x1,y1);
}
//function for degree to radian conversion
float d2r(float degree)
{
float rad=(M_PI*degree)/180;
return rad;
}
//fucntion of clockwise rotation
void crotate(float degree)
{
float rad=d2r(degree);
x2=(x1-320)*cos(rad)-(y1-240)*sin(rad)+320;
y2=(x1-320)*sin(rad)+(y1-240)*cos(rad)+240;
x1=x2;
y1=y2;
}
//fucntion of anti-clockwise rotation
void arotate(float degree)
{
float rad=d2r(degree);
x2=(x1-320)*cos(rad)+(y1-240)*sin(rad)+320;
y2=(y1-240)*cos(rad)-(x1-320)*sin(rad)+240;
x1=x2;
y1=y2;
}
//fucntion to reset clock
void reset()
{
x1=320;
y1=142;
cleardevice();
}
void main()
{
int x,y,button;
int gd=DETECT,gm;
int i;
initgraph(&gd,&gm,"C:\\TurboC3\\BGI");
display();
while(!kbhit())
{
getmousepos(&x,&y,&button);
//if left clicked
if(button==1){
if(x>100 && x<200 && y>5 && y<50)
{
crotate(15);
delay(100);
cleardevice();
display();
}
if(x>250 && x<370 && y>5 && y<50)
{
arotate(15);
delay(100);
cleardevice();
display();
}
if(x>400 && x<500 && y>5 && y<50)
{
reset();
display();
}
}
}
closegraph();
}


No comments:
Post a Comment