Sunday, December 12, 2010

Simulate a car in C

/*
* Control keys are:
* f-> forward
* b-> backward
* 0-> brake
* 1,2,3,4-> gears
*/


#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
void main()
{
int gdriver=DETECT,gmode;
int xc=0,yc=285,r=15,a=0,i,x1,y1,x2,y2,mode=1,dtime=75;
int x3,x4,y3,y4;
int kb='f';
initgraph(&gdriver,&gmode,"c:\\tc\\bgi");
cleardevice();
while(1)
{

if(kbhit())
{
kb=getch();
if(kb=='q')
{
cleardevice();
printf("\n You are about to quit...press any key...");
getch();
exit(0);
}
if(kb=='b')
{
mode=0;
}
if(kb=='f')
{
mode=1;
}
if(kb=='1')
{
dtime=80;
}
if(kb=='2')
{
dtime=60;
}
if(kb=='3')
{
dtime=40;
}
if(kb=='4')
{
dtime=20;
}
if(kb=='0')
{
mode=2;
continue;
}
}

if(mode!=2)
{
cleardevice();
}

line(0,300,640,300);

if(mode==0) //reverse
{
setcolor(9);

/*wheels*/
circle(xc,yc,r);
circle(xc+100,yc,r);
/*body*/
line(xc-35,yc,xc-15,yc);
line(xc+15,yc,xc+85,yc);
line(xc+115,yc,xc+135,yc);
line(xc-35,yc,xc-35,yc-25);
line(xc+135,yc,xc+135,yc-25);

line(xc-35,yc-25,xc,yc-30);
line(xc+135,yc-25,xc+100,yc-30);

line(xc,yc-30,xc+15,yc-50);
line(xc+100,yc-30,xc+85,yc-50);

line(xc+15,yc-50,xc+85,yc-50);
/*glasses*/
line(xc+6,yc-30,xc+18,yc-47);
line(xc+18,yc-47,xc+18,yc-30);
line(xc+6,yc-30,xc+18,yc-30);

line(xc+94,yc-30,xc+82,yc-47);
line(xc+82,yc-47,xc+82,yc-30);
line(xc+94,yc-30,xc+82,yc-30);

line(xc+21,yc-47,xc+21,yc-30);
line(xc+21,yc-47,xc+48,yc-47);
line(xc+21,yc-30,xc+48,yc-30);
line(xc+48,yc-30,xc+48,yc-47);


line(xc+79,yc-47,xc+79,yc-30);
line(xc+79,yc-47,xc+52,yc-47);
line(xc+79,yc-30,xc+52,yc-30);
line(xc+52,yc-30,xc+52,yc-47);

for(i=0;i<4;i++)
{
x1=xc+(r*cos(a));
y1=yc+(r*sin(a));
x2=xc-(r*cos(a));
y2=yc-(r*sin(a));
x3=(xc+100)+(r*cos(a));
y3=yc+(r*sin(a));
x4=(xc+100)-(r*cos(a));
y4=yc-(r*sin(a));
line(x1,y1,x2,y2);
line(x3,y3,x4,y4);
a+=90;

}
xc-=1;
delay(dtime);
}

/*forward*/
if(mode==1)
{
setcolor(9);
/*wheels*/
circle(xc,yc,r);
circle(xc+100,yc,r);
/*body*/
line(xc-35,yc,xc-15,yc);
line(xc+15,yc,xc+85,yc);
line(xc+115,yc,xc+135,yc);
line(xc-35,yc,xc-35,yc-25);
line(xc+135,yc,xc+135,yc-25);

line(xc-35,yc-25,xc,yc-30);
line(xc+135,yc-25,xc+100,yc-30);

line(xc,yc-30,xc+15,yc-50);
line(xc+100,yc-30,xc+85,yc-50);

line(xc+15,yc-50,xc+85,yc-50);
/*glasses*/
line(xc+6,yc-30,xc+18,yc-47);
line(xc+18,yc-47,xc+18,yc-30);
line(xc+6,yc-30,xc+18,yc-30);

line(xc+94,yc-30,xc+82,yc-47);
line(xc+82,yc-47,xc+82,yc-30);
line(xc+94,yc-30,xc+82,yc-30);

line(xc+21,yc-47,xc+21,yc-30);
line(xc+21,yc-47,xc+48,yc-47);
line(xc+21,yc-30,xc+48,yc-30);
line(xc+48,yc-30,xc+48,yc-47);


line(xc+79,yc-47,xc+79,yc-30);
line(xc+79,yc-47,xc+52,yc-47);
line(xc+79,yc-30,xc+52,yc-30);
line(xc+52,yc-30,xc+52,yc-47);

for(i=0;i<4;i++)
{
x1=xc+(r*cos(-a));
y1=yc+(r*sin(-a));
x2=xc-(r*cos(-a));
y2=yc-(r*sin(-a));
x3=(xc+100)+(r*cos(-a));
y3=yc+(r*sin(-a));
x4=(xc+100)-(r*cos(-a));
y4=yc-(r*sin(-a));
line(x1,y1,x2,y2);
line(x3,y3,x4,y4);
a+=90;
}
xc+=1;
delay(dtime);

}

}

}

0 comments:

Post a Comment

Contact Form

Name

Email *

Message *

The Insane Techie - Android App

Launched an android app for the blog on 07th June 2016. Get it from google play store... Tips for using the app Use in landscape mo...