0% found this document useful (0 votes)
33 views

Car Game CPP

This C++ code defines functions and variables to create a simple car game. It includes functions to draw the game elements like borders, cars and enemies to the console screen and handle keyboard input. The main game loop erases and redraws the elements, checks for collisions, increments scores and resets enemies when they reach the bottom. The code also has a main menu to start a new game, view instructions or exit.
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
33 views

Car Game CPP

This C++ code defines functions and variables to create a simple car game. It includes functions to draw the game elements like borders, cars and enemies to the console screen and handle keyboard input. The main game loop erases and redraws the elements, checks for collisions, increments scores and resets enemies when they reach the bottom. The code also has a main menu to start a new game, view instructions or exit.
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

#include<iostream>

#include<conio.h>
#include<dos.h>
#include <windows.h>
#include <time.h>

#define SCREEN_WIDTH 90
#define SCREEN_HEIGHT 26
#define WIN_WIDTH 70

using namespace std;

HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);


COORD CursorPosition;

int enemyY[3];
int enemyX[3];
int enemyFlag[3];
char car[4][4] = { ' ','�','�',' ',
'�','�','�','�',
' ','�','�',' ',
'�','�','�','�' };

int carPos = WIN_WIDTH/2;


int score = 0;

void gotoxy(int x, int y){


CursorPosition.X = x;
CursorPosition.Y = y;
SetConsoleCursorPosition(console, CursorPosition);
}
void setcursor(bool visible, DWORD size) {
if(size == 0)
size = 20;

CONSOLE_CURSOR_INFO lpCursor;
lpCursor.bVisible = visible;
lpCursor.dwSize = size;
SetConsoleCursorInfo(console,&lpCursor);
}
void drawBorder(){
for(int i=0; i<SCREEN_HEIGHT; i++){
for(int j=0; j<17; j++){
gotoxy(0+j,i); cout<<"�";
gotoxy(WIN_WIDTH-j,i); cout<<"�";
}
}
for(int i=0; i<SCREEN_HEIGHT; i++){
gotoxy(SCREEN_WIDTH,i); cout<<"�";
}
}
void genEnemy(int ind){
enemyX[ind] = 17 + rand()%(33);
}
void drawEnemy(int ind){
if( enemyFlag[ind] == true ){
gotoxy(enemyX[ind], enemyY[ind]); cout<<"****";
gotoxy(enemyX[ind], enemyY[ind]+1); cout<<" ** ";
gotoxy(enemyX[ind], enemyY[ind]+2); cout<<"****";
gotoxy(enemyX[ind], enemyY[ind]+3); cout<<" ** ";
}
}
void eraseEnemy(int ind){
if( enemyFlag[ind] == true ){
gotoxy(enemyX[ind], enemyY[ind]); cout<<" ";
gotoxy(enemyX[ind], enemyY[ind]+1); cout<<" ";
gotoxy(enemyX[ind], enemyY[ind]+2); cout<<" ";
gotoxy(enemyX[ind], enemyY[ind]+3); cout<<" ";
}
}
void resetEnemy(int ind){
eraseEnemy(ind);
enemyY[ind] = 1;
genEnemy(ind);
}

void drawCar(){
for(int i=0; i<4; i++){
for(int j=0; j<4; j++){
gotoxy(j+carPos, i+22); cout<<car[i][j];
}
}
}
void eraseCar(){
for(int i=0; i<4; i++){
for(int j=0; j<4; j++){
gotoxy(j+carPos, i+22); cout<<" ";
}
}
}

int collision(){
if( enemyY[0]+4 >= 23 ){
if( enemyX[0] + 4 - carPos >= 0 && enemyX[0] + 4 - carPos < 9 ){
return 1;
}
}
return 0;
}
void gameover(){
system("cls");
cout<<endl;
cout<<"\t\t--------------------------"<<endl;
cout<<"\t\t-------- Game Over -------"<<endl;
cout<<"\t\t--------------------------"<<endl<<endl;
cout<<"\t\tPress any key to go back to menu.";
getch();
}
void updateScore(){
gotoxyy(WIN_WIDTH + 7, 5);cout<<"Score: "<<score<<endl;
}

void instructions(){

system("cls");
cout<<"Instrucciones";
cout<<"\n----------------";
cout<<"\n Esquiva a los carros moviendote de izquierda a derecha ";
cout<<"\n\n Press 'a' to move left";
cout<<"\n Press 'd' to move right";
cout<<"\n Press 'escape' to exit";
cout<<"\n\nPress any key to go back to menu";
getch();
}

void play(){
carPos = -1 + WIN_WIDTH/2;
score = 0;
enemyFlag[0] = 1;
enemyFlag[1] = 0;
enemyY[0] = enemyY[1] = 1;

system("cls");
drawBorder();
updateScore();
genEnemy(0);
genEnemy(1);

gotoxyy(WIN_WIDTH + 7, 2);cout<<"Car Game";


gotoxyy(WIN_WIDTH + 6, 4);cout<<"----------";
gotoxyy(WIN_WIDTH + 6, 6);cout<<"----------";
gotoxyy(WIN_WIDTH + 7, 12);cout<<"Control ";
gotoxyy(WIN_WIDTH + 7, 13);cout<<"-------- ";
gotoxyy(WIN_WIDTH + 2, 14);cout<<" A Key - Izquierda";
gotoxyy(WIN_WIDTH + 2, 15);cout<<" D Key - Derecha";

gotoxyy(18, 5);cout<<"Oprime cualquier tecla para empezar";


getch();
gotoxyy(18, 5);cout<<" ";

while(1){
if(kbhit()){
char ch = getch();
if( ch=='a' || ch=='A' ){
if( carPos > 18 )
carPos -= 4;
}
if( ch=='d' || ch=='D' ){
if( carPos < 50 )
carPos += 4;
}
if(ch==27){
break;
}
}

drawCar();
drawEnemy(0);
drawEnemy(1);
if( collision() == 1 ){
gameover();
return;
}
Sleep(50);
eraseCar();
eraseEnemy(0);
eraseEnemy(1);
if( enemyY[0] == 10 )
if( enemyFlag[1] == 0 )
enemyFlag[1] = 1;

if( enemyFlag[0] == 1 )
enemyY[0] += 1;

if( enemyFlag[1] == 1 )
enemyY[1] += 1;

if( enemyY[0] > SCREEN_HEIGHT-4 ){


resetEnemy(0);
score++;
updateScore();
}
if( enemyY[1] > SCREEN_HEIGHT-4 ){
resetEnemy(1);
score++;
updateScore();
}
}
}

int main()
{
setcursor(0,0);
srand( (unsigned)time(NULL));

do{
system("cls");
color(14);
gotoxyy(10,5); cout<<" -------------------------- ";
gotoxyy(10,6); cout<<" | Car Game | ";
gotoxyy(10,7); cout<<" --------------------------";
color(2);
gotoxyy(10,9); cout<<"1. Jugar";
gotoxyy(10,10); cout<<"2. Instrucciones";
color(4);
gotoxyy(10,11); cout<<"3. Salir";
gotoxyy(10,13); cout<<"Select option: ";
char op = getche();

if( op=='1') play();


else if( op=='2') instructions();
else if( op=='3') exit(0);

}while(1);

return 0;
}

You might also like