Comments are with every function so you can easily understand how this game works if you have any query you can comment below.
Note : Please do not edit copy right tag.
#include<iostream> #include<iomanip> #include<conio.h> //support rand function #include <windows.h> //support different color commands #include<ctime> using namespace std; int mx=40; //"mx" defines from which column robot is going to start int my=21; //"my" deines from which row robot is going to start int i, j; int m; //m for min int s; //s for second char grid[24][80];//2D grid of 24x80 int rNumber; int rPosition; int score; //stores score void gotoxy(int x, int y) //move the cursor to x y coordinate { HANDLE hConsoleOutput; COORD Cursor = {x,y}; hConsoleOutput = GetStdHandle (STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hConsoleOutput, Cursor); } void robot() /* structure i-e body of robot at the mx & my original coordinates */ { grid[my][mx] = 220; //robot foot grid[my][mx+3] = 220; //robot foot grid[my][mx+1] = '|'; //legs grid[my][mx+2] = '|'; //legs grid[my-1][mx+1] = '_'; //body grid[my-1][mx+2] = '_'; //body grid[my-1][mx+4] = '|'; //robot arm grid[my-2][mx+3] = '_'; //robot neck grid[my-2][mx+2] = '|'; //robot neck grid[my-2][mx+1] = '_'; //robot shoulder grid[my-2][mx+4] = '_'; //robot shoulder grid[my-2][mx] = '|'; //robot arm grid[my-3][mx] = '|'; //robot arm grid[my-3][mx+2] = 2; //robot head grid[my-3][mx+1] = 216; //robot horns grid[my-3][mx+3] = 216; //robot horns grid[my-4][mx-2] = '_'; //tray grid[my-4][mx] = '_'; //tray grid[my-4][mx-1] = '_'; //tray grid[my-4][mx+1] = '_'; //tray grid[my-4][mx-2] = '\\'; //tray end grid[my-4][mx+2] = '/'; //tray end } void moverobot() /* make the boody of robot to the new coordinates every time when robot moves */ { grid[my][mx] = 220; //robot foot grid[my][mx+3] = 220; //robot foot grid[my][mx+1] = '|'; //legs grid[my][mx+2] = '|'; //legs grid[my-1][mx+1] = '_'; //body grid[my-1][mx+2] = '_'; //body grid[my-1][mx+4] = '|'; //robot arm grid[my-2][mx+3] = '_'; //robot neck grid[my-2][mx+2] = '|'; //robot neck grid[my-2][mx+1] = '_'; //robot shoulder grid[my-2][mx] = '_'; grid[my-2][mx+4] = '_'; //robot shoulder grid[my-2][mx] = '|'; //robot arm grid[my-3][mx] = '|'; //robot arm grid[my-3][mx+2] = 2; //robot head grid[my-3][mx+1] = 216; //robot horns grid[my-3][mx+3] = 216; //robot horns grid[my-4][mx-2] = '_'; //tray grid[my-4][mx] = '_'; //tray grid[my-4][mx-1] = '_'; //tray grid[my-4][mx+1] = '_'; //tray grid[my-4][mx-2] = '\\'; //tray end grid[my-4][mx+2] = '/'; //tray end } void updatescores(char sc) //Q. it is open for int and long as well but not for decimal number data type. { switch(sc) /*Q. every action is associated with const integral expression (combination of char or int const that evaluate to const int value)*/ { case '0': score = score * 0; //multiply current score with zero break; case '1': score = score + 1; //add 1 to current score break; case '2': score = score + 2; //add 2 to current score break; case '3': score = score + 3; //add 3 to current score break; case '4': score = score + 4; //add 4 to current score break; case '5': score = score + 5; //add 5 to current score break; case '6': score = score + 6; //add 6 to current score break; default: break; } } int pickRandom(int min, int max) //Q. since % only supports int operands for only int data type is accepted { //srand(time(NULL)); int num = rand() % (max - min + 1) + min; //it is the range of rand function return num; } void setrobotspace() /* set spaces to the body of robot and to the new coordinates every time when robot moves */ { grid[my][mx] = ' '; grid[my][mx+3] = ' '; grid[my][mx+1] = ' '; grid[my][mx+2] = ' '; grid[my-1][mx+1] = ' '; grid[my-1][mx+2] = ' '; grid[my-1][mx+4] = ' '; grid[my-2][mx+3] = ' '; grid[my-2][mx+2] = ' '; grid[my-2][mx+1] = ' '; grid[my-2][mx] = ' '; grid[my-2][mx+4] = ' '; grid[my-2][mx] = ' '; grid[my-3][mx] = ' '; grid[my-3][mx+2] = ' '; grid[my-3][mx+1] = ' '; grid[my-3][mx+3] = ' '; grid[my-4][mx] = ' '; grid[my-4][mx-1] = ' '; grid[my-4][mx+1] = ' '; grid[my-4][mx-1] = ' '; grid[my-4][mx+2] = ' '; grid[my-4][mx-2] = ' '; grid[my-4][mx-2] = ' '; } void setrobotvspace() /* set spaces to the body of robot and to the new coordinates every time when robot moves */ { grid[my-3][mx] = ' '; grid[my-3][mx-1] = ' '; grid[my-3][mx+1] = ' '; grid[my-3][mx-2] = ' '; grid[my-3][mx+2] = ' '; grid[my-3][mx+3] = ' '; grid[my-3][mx+4] = ' '; grid[my-2][mx] = ' '; grid[my-2][mx-1] = ' '; grid[my-2][mx+1] = ' '; grid[my-2][mx-2] = ' '; grid[my-2][mx+2] = ' '; grid[my-2][mx+3] = ' '; grid[my-2][mx+4] = ' '; grid[my-1][mx] = ' '; grid[my-1][mx-1] = ' '; grid[my-1][mx+1] = ' '; grid[my-1][mx+3] = ' '; grid[my-1][mx+4] = ' '; grid[my-1][mx-2] = ' '; grid[my-1][mx+2] = ' '; grid[my][mx] = ' '; grid[my][mx-1] = ' '; grid[my][mx+1] = ' '; grid[my][mx-2] = ' '; grid[my][mx+2] = ' '; grid[my][mx+3] = ' '; grid[my][mx+4] = ' '; grid[my+1][mx] = ' '; grid[my+1][mx-1] = ' '; grid[my+1][mx+1] = ' '; grid[my+1][mx-2] = ' '; grid[my+1][mx+2] = ' '; grid[my+1][mx+3] = ' '; grid[my+1][mx+4] = ' '; } void loadgrid() //loads the grid { for (i=0; i<24; i++) { for (j=0; j<79; j++) { grid[i][j]=' '; //prints spaces from 0 to 22nd row and 0 to 78th column } } } void randomgridnumber(int number, int position) { for(int k = 1; k<78; k++) { grid[1][k] = ' '; } grid[1][position] = number; for( int k = 22; k>1 ; k--) { for(int l = 1; l<78; l++){ if(k == my - 4) { if(l == mx || l == mx - 1 || l == mx + 1 || l == mx + 2 || l == mx - 2) { updatescores(grid[k-1][l]); } } grid[k][l] = grid[k-1][l]; } } setrobotvspace(); robot(); } void printgrid() { HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hConsole, ( FOREGROUND_BLUE | FOREGROUND_RED|FOREGROUND_GREEN)); cout<<"COPY RIGHTS:"; cout<<" cpluspluspoint.blogspot.com"; SetConsoleTextAttribute(hConsole, ( FOREGROUND_BLUE |FOREGROUND_GREEN | FOREGROUND_RED | BACKGROUND_BLUE)); //used to display BLUE COLOR with WHITE COLORED text gotoxy(0,0); for (i=0; i<19; i++) { for (j=0; j<79; j++) { cout<<grid[i][j]; } cout<<endl; } SetConsoleTextAttribute(hConsole, ( FOREGROUND_BLUE |FOREGROUND_GREEN | FOREGROUND_RED | BACKGROUND_GREEN)); //used to display GREEN COLOR with WHITE COLORED text for (i=19; i<22; i++) { for (j=0; j<79; j++) { cout<<grid[i][j]; } cout<<endl; } SetConsoleTextAttribute(hConsole, (FOREGROUND_BLUE |FOREGROUND_GREEN | FOREGROUND_RED | BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN)); //used to display intense YELLOW COLOR with WHITE COLORED text for (i=22; i<23; i++) { for (j=0; j<79; j++) { cout<<grid[i][j]; } cout<<endl; } //---------FOR LEAF BORDERS--------- for (i=0;i<24;i++) { grid[i][0]=(char)6; //displays leaf border to the left side of the screen } for (i=0;i<24;i++) { grid[i][78]=(char)6; //displays leaf border to the right side of the screen } for (j=0;j<78;j++) { grid[0][j]=(char)6; //displays leaf border to the top of the screen } SetConsoleTextAttribute(hConsole, ( BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY )); for (int j=0;j<79;j++) { cout<<grid[23][j]; } gotoxy(7,23); cout<<"Score :"<<score; gotoxy(57,23); cout<<"Time Remaining "<<m<<":"<<s; //displays time starting from 3minutes cout<<endl; } int main() { int choice; do { // do start HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hConsole, ( BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY )); char a[24][80]={0}; for (int q=0;q<24;q++) { for(int w=0;w<79;w++) { cout<<a[q][w]; } cout<<endl; } gotoxy(6,3); //diplays text in MENU cout<<"\t\n 1 - Start Game\n"<< " 2 - About\n"<< " 3 - Instructions\n" << " 4 - Exit\n"<<"\n\n\nWarning:\n\tCoping and reproducing in whole or in part is strictly prohibited.\n\t This game is registered trademark of its rightful owners."; gotoxy(29,10); cout<< " Enter your choice : "; cin >> choice; gotoxy(30,17); cout<<"Loading As Selected"; for(int i=0;i<16;i++) { gotoxy(8+i,18); cout<<"\n\t\t\t\t ________________"; gotoxy(32,20); cout<<char(179); gotoxy(33+i,20); cout<<char(178); gotoxy(23+i,20); cout<<"\n\t\t\t\t ================"; gotoxy(49,20); cout<<char(179); Sleep(400); } switch (choice) { case 1: score = 0; rNumber = pickRandom(48,54); // for x cordinates; rPosition = pickRandom(1,76); loadgrid(); robot(); printgrid(); for (m=2;m>=0;m--) //mints { for (s=59;s>=0;s--) //seconds { for(int mili = 10; mili > 0; mili--) // if this loop was ignored then numbers drop rate= sleep(1000) { //miliseconds 10mili sec are equal to one sec randomgridnumber(rNumber, rPosition); Sleep(1); if (GetAsyncKeyState(VK_LEFT) < 0){ if(mx > 3) //prevents the ROBOT from going outside the grid // hearthgrid\_(3) // grid disturbs { setrobotspace(); mx=mx-1; moverobot(); } } if (GetAsyncKeyState(VK_RIGHT) < 0){ if(mx < 73) //prevents the ROBOT from going outside the grid { setrobotspace(); mx=mx+1; moverobot(); } } printgrid(); rNumber = pickRandom(48,54); rPosition = pickRandom(1,76); } } } break; case 2: cout<<"\n\n\Shared by on fb/cpluspluspoint"; break; case 3: cout << "\nMove the robot LEFT or RIGHT to collect the falling numbers. \nYou have three minutes so, score as much as you can.\nZero can reset your score avoid catching zero. \n"; break; case 4: cout<<"Exit\n"; default: gotoxy(28,15); cout << "Not a Valid Choice. \n"; break; } } //do end while (choice!=4); return 0; system("pause"); }
0 comments:
Post a Comment