#include <iostream> #include <cstdlib> #include <ctime> using namespace std; const int WIDTH = 20; const int HEIGHT = 10; struct GameObject { int x, y; char symbol; }; class Game { public: char grid[HEIGHT][WIDTH]; GameObject player; GameObject people[5]; GameObject meteors[3]; int score; bool gameOver; Game() { score = 0; gameOver = false; player = {WIDTH / 2, HEIGHT - 2, 'S'}; srand(time(0)); // Initialize grid for (int i = 0; i < HEIGHT; i++) { for (int j = 0; j < WIDTH; j++) { grid[i][j] = '.'; } } // Place people (P) at random positions for (int i = 0; i < 5; i++) { people[i] = {rand() % WIDTH, rand() % (HEIGHT - 1), 'P'}; } // Place meteors (O) at random positions for (int i = 0; i < 3; i++) { meteors[i] = {rand() % WIDTH, rand() % (HEIGHT - 1), 'O'}; } } void draw() { // Clear grid for (int i = 0; i < HEIGHT; i++) { for (int j = 0; j < WIDTH; j++) { grid[i][j] = '.'; } } // Draw player grid[player.y][player.x] = player.symbol; // Draw people for (int i = 0; i < 5; i++) { if (people[i].x >= 0 && people[i].x < WIDTH && people[i].y >= 0 && people[i].y < HEIGHT) { grid[people[i].y][people[i].x] = people[i].symbol; } } // Draw meteors for (int i = 0; i < 3; i++) { if (meteors[i].x >= 0 && meteors[i].x < WIDTH && meteors[i].y >= 0 && meteors[i].y < HEIGHT) { grid[meteors[i].y][meteors[i].x] = meteors[i].symbol; } } // Print grid to console system("clear"); // For Linux/Unix, use system("cls") on Windows for (int i = 0; i < HEIGHT; i++) { for (int j = 0; j < WIDTH; j++) { cout << grid[i][j]; } cout << endl; } // Display score cout << "Score: " << score << endl; } void movePlayer(char direction) { if (direction == 'w' && player.y > 0) player.y--; if (direction == 's' && player.y < HEIGHT - 1) player.y++; if (direction == 'a' && player.x > 0) player.x--; if (direction == 'd' && player.x < WIDTH - 1) player.x++; } void checkCollisions() { // Check if player collects a person for (int i = 0; i < 5; i++) { if (player.x == people[i].x && player.y == people[i].y) { people[i].x = -1; // Remove person score += 10; // Increase score } } // Check if player hits a meteor for (int i = 0; i < 3; i++) { if (player.x == meteors[i].x && player.y == meteors[i].y) { gameOver = true; // End game on collision } } } void update() { // Move meteors down for (int i = 0; i < 3; i++) { meteors[i].y++; if (meteors[i].y >= HEIGHT) { meteors[i].y = 0; // Reset meteor to top if it goes off screen meteors[i].x = rand() % WIDTH; } } checkCollisions(); } void play() { while (!gameOver) { draw(); cout << "Move (WASD): "; char input; cin >> input; movePlayer(input); update(); } // End game message draw(); cout << "Game Over! Final Score: " << score << endl; } }; int main() { Game game; game.play(); return 0; }
Standard input is empty
.................... .................... .................... ...............P.... ....P...........O... .................... ....O......P.O...... ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... .................... ...............P.... ....P............... ................O... ...........P........ ....O.P...P..O...... ..........S......... .................... Score: 0 Move (WASD): .................... .................... .................... ...............P.... ....P............... .................... ...........P....O... ......P...P......... ....O.....S..O...... .................... Score: 0 Move (WASD): .................... .................... .................... ...............P.... ....P............... .................... ...........P........ ......P...P.....O... ..........S......... ....O........O...... Score: 0 Move (WASD): ....O............O.. .................... .................... ...............P.... ....P............... .................... ...........P........ ......P...P......... ..........S.....O... .................... Score: 0 Move (WASD): .................... ....O............O.. .................... ...............P.... ....P............... .................... ...........P........ ......P...P......... ..........S......... ................O... Score: 0 Move (WASD): ..O................. .................... ....O............O.. ...............P.... ....P............... .................... ...........P........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... ..O................. .................... ....O..........P.O.. ....P............... .................... ...........P........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... ..O................. ...............P.... ....O............O.. .................... ...........P........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... .................... ..O............P.... ....P............... ....O............O.. ...........P........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... .................... ...............P.... ..O.P............... .................... ....O......P.....O.. ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... .................... ...............P.... ....P............... ..O................. ...........P........ ....O.P...P......O.. ..........S......... .................... Score: 0 Move (WASD): .................... .................... .................... ...............P.... ....P............... .................... ..O........P........ ......P...P......... ....O.....S......O.. .................... Score: 0 Move (WASD): .................... .................... .................... ...............P.... ....P............... .................... ...........P........ ..O...P...P......... ..........S......... ....O............O.. Score: 0 Move (WASD): .........O.O........ .................... .................... ...............P.... ....P............... .................... ...........P........ ......P...P......... ..O.......S......... .................... Score: 0 Move (WASD): .................... .........O.O........ .................... ...............P.... ....P............... .................... ...........P........ ......P...P......... ..........S......... ..O................. Score: 0 Move (WASD): ...............O.... .................... .........O.O........ ...............P.... ....P............... .................... ...........P........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... ...............O.... .................... .........O.O...P.... ....P............... .................... ...........P........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... ...............O.... ...............P.... ....P....O.O........ .................... ...........P........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... .................... ...............O.... ....P............... .........O.O........ ...........P........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... .................... ...............P.... ....P..........O.... .................... .........O.O........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... .................... ...............P.... ....P............... ...............O.... ...........P........ ......P..OPO........ ..........S......... .................... Score: 0 Move (WASD): .................... .................... .................... ...............P.... ....P............... .................... ...........P...O.... ......P...P......... .........OSO........ .................... Score: 0 Move (WASD): .................... .................... .................... ...............P.... ....P............... .................... ...........P........ ......P...P....O.... ..........S......... .........O.O........ Score: 0 Move (WASD): ....O.O............. .................... .................... ...............P.... ....P............... .................... ...........P........ ......P...P......... ..........S....O.... .................... Score: 0 Move (WASD): .................... ....O.O............. .................... ...............P.... ....P............... .................... ...........P........ ......P...P......... ..........S......... ...............O.... Score: 0 Move (WASD): ................O... .................... ....O.O............. ...............P.... ....P............... .................... ...........P........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... ................O... .................... ....O.O........P.... ....P............... .................... ...........P........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... ................O... ...............P.... ....O.O............. .................... ...........P........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... .................... ...............PO... ....P............... ....O.O............. ...........P........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... .................... ...............P.... ....P...........O... .................... ....O.O....P........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... .................... ...............P.... ....P............... ................O... ...........P........ ....O.O...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... .................... ...............P.... ....P............... .................... ...........P....O... ......P...P......... ....O.O...S......... .................... Score: 0 Move (WASD): .................... .................... .................... ...............P.... ....P............... .................... ...........P........ ......P...P.....O... ..........S......... ....O.O............. Score: 0 Move (WASD): ....O.........O..... .................... .................... ...............P.... ....P............... .................... ...........P........ ......P...P......... ..........S.....O... .................... Score: 0 Move (WASD): .................... ....O.........O..... .................... ...............P.... ....P............... .................... ...........P........ ......P...P......... ..........S......... ................O... Score: 0 Move (WASD): ........O........... .................... ....O.........O..... ...............P.... ....P............... .................... ...........P........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... ........O........... .................... ....O.........OP.... ....P............... .................... ...........P........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... ........O........... ...............P.... ....O.........O..... .................... ...........P........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... .................... ........O......P.... ....P............... ....O.........O..... ...........P........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... .................... ...............P.... ....P...O........... .................... ....O......P..O..... ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... .................... ...............P.... ....P............... ........O........... ...........P........ ....O.P...P...O..... ..........S......... .................... Score: 0 Move (WASD): .................... .................... .................... ...............P.... ....P............... .................... ........O..P........ ......P...P......... ....O.....S...O..... .................... Score: 0 Move (WASD): .................... .................... .................... ...............P.... ....P............... .................... ...........P........ ......P.O.P......... ..........S......... ....O.........O..... Score: 0 Move (WASD): .........OO......... .................... .................... ...............P.... ....P............... .................... ...........P........ ......P...P......... ........O.S......... .................... Score: 0 Move (WASD): .................... .........OO......... .................... ...............P.... ....P............... .................... ...........P........ ......P...P......... ..........S......... ........O........... Score: 0 Move (WASD): .....O.............. .................... .........OO......... ...............P.... ....P............... .................... ...........P........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .....O.............. .................... .........OO....P.... ....P............... .................... ...........P........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... .....O.............. ...............P.... ....P....OO......... .................... ...........P........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... .................... .....O.........P.... ....P............... .........OO......... ...........P........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... .................... ...............P.... ....PO.............. .................... .........OOP........ ......P...P......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... .................... ...............P.... ....P............... .....O.............. ...........P........ ......P..OO......... ..........S......... .................... Score: 0 Move (WASD): .................... .................... .................... ...............P.... ....P............... .................... .....O.....P........ ......P...P......... .........OO......... .................... Score: 0 Game Over! Final Score: 0
TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set. TERM environment variable not set.