#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(){ gotoxy(WIN_WIDTH + 7, 5);cout<<"Score: "<<score<<endl; } void instructions(){ system("cls"); cout<<"Instructions"; cout<<"\n----------------"; cout<<"\n Avoid Cars by moving left or right. "; 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); gotoxy(WIN_WIDTH + 7, 2);cout<<"Car Game"; gotoxy(WIN_WIDTH + 6, 4);cout<<"----------"; gotoxy(WIN_WIDTH + 6, 6);cout<<"----------"; gotoxy(WIN_WIDTH + 7, 12);cout<<"Control "; gotoxy(WIN_WIDTH + 7, 13);cout<<"-------- "; gotoxy(WIN_WIDTH + 2, 14);cout<<" A Key - Left"; gotoxy(WIN_WIDTH + 2, 15);cout<<" D Key - Right"; gotoxy(18, 5);cout<<"Press any key to start"; getch(); gotoxy(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"); gotoxy(10,5); cout<<" -------------------------- "; gotoxy(10,6); cout<<" | Car Game | "; gotoxy(10,7); cout<<" --------------------------"; gotoxy(10,9); cout<<"1. Start Game"; gotoxy(10,10); cout<<"2. Instructions"; gotoxy(10,11); cout<<"3. Quit"; gotoxy(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; }
Write, Run & Share C++ code online using OneCompiler's C++ online compiler for free. It's one of the robust, feature-rich online compilers for C++ language, running on the latest version 17. Getting started with the OneCompiler's C++ compiler is simple and pretty fast. The editor shows sample boilerplate code when you choose language as C++
and start coding!
OneCompiler's C++ online compiler supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample program which takes name as input and print your name with hello.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string name;
cout << "Enter name:";
getline (cin, name);
cout << "Hello " << name;
return 0;
}
C++ is a widely used middle-level programming language.
When ever you want to perform a set of operations based on a condition If-Else is used.
if(conditional-expression) {
//code
}
else {
//code
}
You can also use if-else for nested Ifs and If-Else-If ladder when multiple conditions are to be performed on a single variable.
Switch is an alternative to If-Else-If ladder.
switch(conditional-expression){
case value1:
// code
break; // optional
case value2:
// code
break; // optional
......
default:
code to be executed when all the above cases are not matched;
}
For loop is used to iterate a set of statements based on a condition.
for(Initialization; Condition; Increment/decrement){
//code
}
While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.
while (condition) {
// code
}
Do-while is also used to iterate a set of statements based on a condition. It is mostly used when you need to execute the statements atleast once.
do {
// code
} while (condition);
Function is a sub-routine which contains set of statements. Usually functions are written when multiple calls are required to same set of statements which increases re-usuability and modularity. Function gets run only when it is called.
return_type function_name(parameters);
function_name (parameters)
return_type function_name(parameters) {
// code
}