/*
* 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);
}
}
}