The program is as follows:
#include<stdio.h>
#include<graphics.h>
#include<math.h>
int theta1,theta2,xc,yc,ballradius=10;
float x1,y1,x2,y2,r=80;
float rad;
void drawD(int x0,int y0,int r)
{
line(x0,y0,x0,y0-r);
line(x0,y0,x0,y0+r);
arc(x0,y0,270,90,r);
}
void getPath1()//clockwise
{
if(x1<xc)
{
if(x1==xc-ballradius)
{
if(y1>yc-r)
y1--;
else
x1++;
}
else if(x1>xc-ballradius)
{
if(y1<yc)
x1++;
else
x1--;
}
}
else if(x1==xc)
{
if(y1<yc)
x1=xc+1;
else
x1=xc-1;
theta1=0;
}
else {
theta1+=1;
if(theta1==180)
{
x1=xc;
return;
}
rad=3.14f*theta1/180;
y1=yc-r*cos(rad);
x1=xc+r*sin(rad);
}
}
void getPath2()//anti clockwise
{
if(x2==xc+ballradius)
{
if(y2<yc+r)
y2++;
else
{
x2++;
theta2=10;
}
}
else if(x2>xc+ballradius)
{
theta2+=1;
if(theta2==180-10)
{
x2=xc+ballradius;
return;
}
rad=3.14f*theta2/180;
y2=yc+r*cos(rad);
x2=xc+r*sin(rad);
}
}
void drawCircle(int x0,int y0)
{
static int theta=0;
int xp1,xp2,yp1,yp2,tt;
float rad;
theta=(theta+5)%360;
rad=3.14f*theta/180;
xp1=ballradius*cos(rad);
yp1=ballradius*sin(rad);
rad=3.14f*(theta+90)/180;
xp2=ballradius*cos(rad);
yp2=ballradius*sin(rad);
line(x0+xp1,y0+yp1,x0-xp1,y0-yp1);
line(x0+xp2,y0+yp2,x0-xp2,y0-yp2);
circle(x0,y0,ballradius);
}
void main()
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"C:\\TURBOC3\\BGI\\");
x1=xc=getmaxx()/2;
yc=getmaxy()/2;
y1=yc-r;
r=70;
x2=xc+ballradius;
y2=yc+r*cos(3.14f*10/180);
while(!kbhit())
{
r=80;
drawD(xc,yc,r);
r=90;//outer
getPath1();//outer
drawCircle(x1,y1);
r=70;
drawCircle(x2,y2);
getPath2();
delay(30);
cleardevice();
}
}
No comments:
Post a Comment