The program is as follows:
#include<stdio.h>
#include<math.h>
#include<graphics.h>
int gd=DETECT,gm;
int x,y,dir,deg=0;
float rad1,rad2;
void car(int x, int y,int dir)
{
int i;
int p1[8]={75,0,160,0,177,75,50,75};
int p2[8]={80,10,115,10,115,60,70,60};
int p3[8]={120,10,150,10,165,60,120,60};
int p4[8]={20,75,225,75,240,140,0,140};
int p5[8]={15,90,30,90,25,115,8,115};
int p6[8]={215,90,230,90,235,115,220,115};
int wavex=215,wavey=40,phase=0;
float rad;
wavex+=x;
for(i=0;i<8;i+=2)
{
p1[i]+=x;
p1[i+1]+=y;
p2[i]+=x;
p2[i+1]+=y;
p3[i]+=x;
p3[i+1]+=y;
p4[i]+=x;
p4[i+1]+=y;
p5[i]+=x;
p5[i+1]+=y;
p6[i]+=x;
p6[i+1]+=y;
}
setcolor(DARKGRAY);
setfillstyle(SOLID_FILL,BLUE);
fillpoly(4,p1);
fillpoly(4,p4);
setfillstyle(SOLID_FILL,LIGHTGRAY);
fillpoly(4,p2);
fillpoly(4,p3);
setfillstyle(SOLID_FILL,LIGHTGREEN);
fillpoly(4,p5);
fillpoly(4,p6);
setcolor(BROWN);
//tyres
setfillstyle(SOLID_FILL,DARKGRAY);
fillellipse(x+60,y+150,25,25);
fillellipse(x+185,y+150,25,25);
setfillstyle(SOLID_FILL,BROWN);
fillellipse(x+60,y+150,10,10);
fillellipse(x+185,y+150,10,10);
setcolor(YELLOW);
rad1=3.14f*deg/180;
rad2=3.14f*(deg+90)/180;
line(x+60,y+150,x+60+10*cos(rad1),y+150+10*sin(rad1));
line(x+60,y+150,x+60+10*cos(rad2),y+150+10*sin(rad2));
line(x+60,y+150,x+60-10*cos(rad1),y+150-10*sin(rad1));
line(x+60,y+150,x+60-10*cos(rad2),y+150-10*sin(rad2));
line(x+185,y+150,x+185+10*cos(rad1),y+150+10*sin(rad1));
line(x+185,y+150,x+185+10*cos(rad2),y+150+10*sin(rad2));
line(x+185,y+150,x+185-10*cos(rad1),y+150-10*sin(rad1));
line(x+185,y+150,x+185-10*cos(rad2),y+150-10*sin(rad2));
//flag
setcolor(LIGHTGRAY);
line(x+215,y+75,x+215,y+40);
setcolor(RED);
wavey=66;
phase=(phase+90)%360;
for(i=0;i<720;i+=10)
{
rad=(wavex+phase+i)*3.14f/180;
putpixel(wavex-dir*(i)/30,wavey+3*sin(rad),RED);
putpixel(wavex-dir*(i)/30,wavey+6+3*sin(rad),RED);
putpixel(wavex-dir*(i)/30,wavey+12+3*sin(rad),RED);
}
}
void main()
{
int c1=10,incr=0,xmax;
float despeed=0.5f,speed=3;;
initgraph(&gd,&gm,"");
cleardevice();
xmax=getmaxx();
dir=0;
x=20,y=30;
while(c1!='q')
{
if(kbhit())
{
c1=getch();
if(c1==0)
{
c1=getch();
if(c1==75)
{
x-=3;
deg=(deg+dir*20)%360;
if(speed>3)
speed=3;
dir=-1;
}
else if(c1==77)
{
x+=speed;
deg=(deg+dir*20)%360;
incr=(incr+1)%5;
speed+=incr/4;
dir=1;
}
}
}
else if(speed>0)
{
x+=speed;
deg=(deg+dir*20)%360;
speed-=despeed;
if(speed<0)
speed=0;
}
delay(60);
cleardevice();
if(x>=xmax)
x=-235;
if(x<-235)
x=xmax;
car(x,y,dir);
}
closegraph();
}
No comments:
Post a Comment