All pastes #2134541 Raw Edit

CarRace

public c v1 · immutable
#2134541 ·published 2012-04-01 16:26 UTC
rendered paste body
#include<conio.h> #include<process.h> #include<stdio.h> #include<dos.h> #include<stdlib.h> #include<fstream.h> #include<graphics.h> #define LEFT 75 #define RIGHT 77 #define UP 72 #define DOWN 80 #define ENTER 13 class CAR {     public: 	int vel, cp, init, op1, op2, op3, level; 	long score; 	long lev_score[ 5 ]; 	char player[ 20 ]; 	CAR::CAR() 	{ 	    level = 1; 	    vel = 1; 	    cp = 300; 	    init = 0; 	    op1 = 0; 	    op2 = -20; 	    op3 = -40; 	    score = 0; 	    lev_score[ 0 ] = 10000; 	    lev_score[ 1 ] = 30000; 	    lev_score[ 2 ] = 60000; 	    lev_score[ 3 ] = 100000; 	    lev_score[ 4 ] = 150000; 	} } car; int randx( void ) {     int x = random( 56 * 8 );     if ( x < 22 * 8 )     { 	x = x + ( 22 * 8 );     }     return ( x ); } void right() {     if ( car.cp < 420 )     { 	car.cp += 10;     }     return ; } void left() {     if ( car.cp > 180 )     { 	car.cp -= 10;     }     return ; } void score_store() {     cleardevice();     setcolor( 4 );     settextstyle( 2, 0, 6 );     outtextxy( 10, 0, "Your score is" );     gotoxy( 20, 2 );     cout << car.score;     outtextxy( 10, 40, "Enter your name to store :" );     gotoxy( 35, 4 );     gets( car.player );     ofstream score;     score.open( "score.dat", ios::app );     score << "\n";     score.write( car.player, 20 );     score << car.score;     score.close(); } void disp_score() {     cleardevice();     setcolor( 5 );     settextstyle( 2, 0, 9 );     outtextxy( 200, 20, "SCORE BOARD" );     ifstream score( "score.dat" );     char ch;     int i = 0;     gotoxy( 1, 5 );     while ( score.get( ch ) )     { 	score.seekg( i, ios::beg ); 	score.get( ch ); 	cout << ch; 	i++;     }     getch();     return ; } void bgmove() {     if ( car.init > 5 )     { 	car.init = 1;     }     else     { 	car.init += car.vel;     }     setcolor( RED );     setfillstyle( SOLID_FILL, RED );     sector( car.cp + 20, 330, 0, 180, 20, 30 );     setfillstyle( SOLID_FILL, YELLOW );     bar3d( car.cp, 333, car.cp + 37, 360, 4, 4 );     sector( car.cp + 20, 362, 180, 360, 20, 10 );     for ( int i = car.init;i < 70;i += 5 )     { 	setcolor( GREEN ); 	setfillstyle( 9, GREEN ); 	bar( 16 * 8, i * 8, 20 * 8, ( i + 2 ) * 8 ); 	bar( 60 * 8, i * 8, 64 * 8, ( i + 2 ) * 8 );     }     return ; } void opp1( int x1 ) {     if ( car.op1 < 600 )     { 	car.op1 += 10; 	setfillstyle( 1, RED ); 	bar3d( x1, car.op1, x1 + 30, car.op1 + 30, 2, 3 );     }     else     { 	car.op1 = 0;     }     return ; } void opp2( int x2 ) {     if ( car.op2 < 600 )     { 	car.op2 += 10; 	setfillstyle( 1, YELLOW ); 	bar3d( x2, car.op2, x2 + 30, car.op2 + 30, 2, 3 );     }     else     { 	car.op2 = 0;     }     return ; } void opp3( int x3 ) {     if ( car.op3 < 600 )     { 	car.op3 += 10; 	setfillstyle( 1, BLUE ); 	bar3d( x3, car.op3, x3 + 30, car.op3 + 30, 2, 3 );     }     else     { 	car.op3 = 0;     }     return ; } int check( int x, int op, int cp ) {     int a[ 31 ], b[ 31 ], c[ 40 ], d[ 50 ];     for ( int i = 0;i < 30;i++ )     { 	a[ i ] = x + i;     }     for ( i = 0;i < 30;i++ )     { 	b[ i ] = op + i;     }     for ( i = 0;i < 40;i++ )     { 	c[ i ] = cp + i;     }      for ( i = 0;i < 50;i++ )     { 	d[ i ] = 300 + i;     }     for ( i = 0;i < 40;i++ )     { 	for ( int j = 0;j < 50;j++ ) 	{ 	    for ( int k = 0;k < 30;k++ ) 	    { 		if ( a[ k ] == c[ i ] && b[ k ] == d[ j ] ) 		    return 1; 	    } 	}     }     return 0; } void logo () {     for ( int i = 1;i < 250;i++ )     { 	int p; 	setcolor( YELLOW ); 	setfillstyle( SOLID_FILL, LIGHTBLUE ); 	settextstyle( 4, HORIZ_DIR, 5 ); 	outtextxy( 100, 100, "DANGEROUS ROAD" ); 	outtextxy( 200, 140, "RACING" ); 	setcolor( 4 ); 	bar3d( 50, 200, 550, 220, 10, 40 ); 	setcolor( WHITE ); 	settextstyle( 2, HORIZ_DIR, 5 ); 	outtextxy( 290, 380, "LOADING..." ); 	setfillstyle( SOLID_FILL, GREEN ); 	bar( 190, 400, 190 + i, 420 ); 	rectangle( 190, 400, 440, 420 ); 	delay( 15 );     }     delay( 2000 );     cleardevice();     return ; }  void loss( void ) {     setcolor( 10 );     settextstyle( 2, 0, 9 );     outtextxy( 180, 150, "ONE CHANCE LOST" );     delay( 1000 );     return ; } void over( void ) {     for ( int i = 1;i < 35;i++ )     { 	cleardevice();delay( 20 ); 	settextstyle( 1, 0, 6 ); 	setcolor( RED ); 	outtextxy( 150, 100, "GAME OVER" ); 	delay( 20 );     }     delay( 2000 );     cleardevice();     score_store();     getch();     return ; } void score() {     car.score = car.score + 11 * car.vel;     setcolor( 5 );     settextstyle( 2, 0, 6 );     outtextxy( 530, 12, "Score " );     gotoxy( 75, 2 );     cout << car.score;     return ; } void win() {     cleardevice();     for ( int k = 0;k < 2;k++ )     { 	for ( int i = 0;i < 15;i++ ) 	{ 	    setcolor( i ); 	    settextstyle( 4, 0, 5 ); 	    outtextxy( 200, 100, "Congrats!!" ); 	    setcolor( i + 1 ); 	    outtextxy( 150, 200, "You won the race" ); 	    delay( 150 ); 	}     }     delay( 3000 );     score_store();     return ; } void level( void ) {     int level = car.level;     if ( car.score > car.lev_score[ level - 1 ] )     { 	if ( car.level < 5 ) 	{ 	    car.level++; 	    if ( car.vel < 4 ) 	    { 		car.vel++; 	    } 	} 	else 	{win();}     }     settextstyle( 2, 0, 6 );     setcolor( 5 );     outtextxy( 4, 12, "Level" );     gotoxy( 8, 2 );     cout << car.level;     return ; } void about() {     char opt;     while ( !kbhit() )     { 	for ( int i = 300;kbhit() == 0;i++ ) 	{ 	    cleardevice(); 	    setcolor( 9 ); 	    settextstyle( 4, 0, 5 ); 	    setfillstyle( 9, 12 ); 	    outtextxy( 220, 0, "ABOUT" ); 	    bar( 220, 60, 370, 62 ); 	    settextstyle( 2, 0, 5 ); 	    setcolor( 2 ); 	    outtextxy( 20, 100, "We had completed our work as a part of our computer science project work." ); 	    outtextxy( 3, 115, "We had tried to reduce maximum problems in our program. Eventhough it may " ); 	    outtextxy( 3, 130, "consist several technical and logical problems." ); 	    outtextxy( 3, 165, "WE ARE........." ); 	    outtextxy( 3, 180, "Hold a key to enter menu...." ); 	    setcolor( 6 ); 	    settextstyle( 2, 0, 6 ); 	    outtextxy( 600 - i, 600 - i, "Niyas C" ); 	    outtextxy( i - 150, 215, "Muhammed Dilshad" ); 	    outtextxy( i - 30, i - 130, "Shafeeq " ); 	    outtextxy( 600 - i, i - 150, "Najah Muhammed" ); 	    outtextxy( 350, 600 - i, "Azharudheen" ); 	    setfillstyle( 1, 4 ); 	    bar3d( 180, 380, 450, 460, 4, 6 ); 	    setcolor( 1 ); 	    settextstyle( 2, 0, 10 ); 	    outtextxy( 280, 380, "S2C" ); 	    outtextxy( 215, 420, "2009-2010" ); 	    delay( 60 ); 	}     }     getch();     return ; } int play( void ) {     car.score = 0;     int life = 3, m, x1, x2, x3, s; re:     while ( life )     { 	cleardevice(); 	if ( car.op1 == 0 ) 	{ 	    x1 = randx(); 	    car.op1++; 	} 	else 	{ 	    opp1( x1 ); 	} 	if ( car.op2 == 0 ) 	{ 	    x2 = randx(); 	    car.op2++; 	} 	else if ( car.op2 < 1 ) 	{car.op2++;} 	else 	{ 	    opp2( x2 ); 	} 	if ( car.op3 == 0 ) 	{ 	    x3 = randx(); 	    car.op3++; 	} 	else if ( car.op3 < 1 ) 	{car.op3++;} 	else 	{ 	    opp3( x3 ); 	} 	setcolor( 10 ); 	setfillstyle( 0, 0 ); 	bar3d( 0, 0, 80, 70, 4, 3 ); 	bgmove(); 	level(); 	score(); 	settextstyle( 2, 0, 6 ); 	setcolor( 5 ); 	outtextxy( 4, 44, "Life" ); 	gotoxy( 8, 4 );cout << life; 	if ( check( x2, car.op2, car.cp ) || check( x1, car.op1, car.cp ) || check( x3, car.op3, car.cp ) ) 	{ 	    loss(); 	    life--; 	    if ( life == 0 ) 	    { 		over(); 	    } 	    car.op1 = 1; 	    car.op2 = -16; 	    car.op3 = -32; 	    goto re; 	} 	if ( kbhit() ) 	{ 	    m = getch(); 	    switch ( m ) 	    { 	    case LEFT: left(); 		break; 	    case RIGHT: right(); 		break; 	    case 'q': exit( 0 ); 	    } 	} 	else 	{ 	    delay( 100 ); 	}     }     getch();     return ( 0 ); } void help() {     cleardevice();     settextstyle( 4, 0, 6 );     setcolor( 13 );     outtextxy( 200, 10, "HELP" );     textcolor( YELLOW );     gotoxy( 3, 6 );     cout << "\n\n\n\n\n\n\nDPR (Dangerous Road Racing is a simple game in which you have to lead a car by avoiding blocks on road.\nYou have to use the following keys to controll the car\n\n->UP\t--\tForward movement\n->LEFT\t--\tLeftside movement\n->RIGHT\t--\tRightside movement\n->q\t--\tExit from game at any time\n";     getch();     return ; } void menu() {     int s = 1, t = 0, a, p = 140;     do     { 	do 	{ 	    cleardevice(); 	    setcolor( YELLOW ); 	    settextstyle( 1, 0, 4 ); 	    outtextxy( 230, 30, "MENU" ); 	    setfillstyle( 1, 2 ); 	    bar( 140, 80, 400, 82 ); 	    settextstyle( 1, 0, 1 ); 	    setcolor( 10 ); 	    outtextxy( 220, 137, "PLAY GAME" ); 	    outtextxy( 220, 167, "SCORES" ); 	    outtextxy( 220, 197, "HELP" ); 	    outtextxy( 220, 227, "ABOUT" ); 	    outtextxy( 220, 257, "EXIT" ); 	    setcolor( RED ); 	    rectangle( 200, p, 350, p + 20 ); 	    a = getch(); 	    switch ( a ) 	    { 	    case UP: if ( p > 140 ) 		{ 		    p -= 30; 		    s--; 		} 		break; 	    case DOWN: if ( p < 260 ) 		{ 		    p += 30; 		    s++; 		}; 		break; 	    case ENTER: a = 1; 		break; 	    default: break; 	    } 	} 	while ( a != 1 ); 	switch ( s ) 	{ 	case 1: play(); 	   	 break; 	case 2: disp_score(); 	  	  break; 	case 3: help(); 	   	 break; 	case 4: about(); 	    	break; 	case 5: exit( 0 ); 		 break; 	}     }     while ( t == 0 );     getch(); } void main() {     int gdriver = DETECT, gmode, errorcode;     initgraph( &gdriver, &gmode, "" );     cleardevice();     logo();     menu();     closegraph(); }