#include <iostream> #include <vector> #include <thread> #include <chrono> const int WIDTH = 40; const int HEIGHT = 20; struct Ball { int x = WIDTH / 2, y = HEIGHT / 2; int dx = 1, dy = -1; }; struct Paddle { int x = WIDTH / 2 - 3; const int y = HEIGHT - 1; const int width = 7; }; struct Brick { int x, y; bool alive = true; }; void draw(const Ball& ball, const Paddle& paddle, const std::vector<Brick>& bricks) { std::vector<std::string> screen(HEIGHT, std::string(WIDTH, ' ')); for (const auto& b : bricks) if (b.alive) screen[b.y][b.x] = '#'; screen[ball.y][ball.x] = 'O'; for (int i = 0; i < paddle.width; ++i) screen[paddle.y][paddle.x + i] = '='; system("clear"); // use "cls" on Windows for (const auto& row : screen) std::cout << row << "\n"; } void updateBall(Ball& ball, Paddle& paddle, std::vector<Brick>& bricks) { ball.x += ball.dx; ball.y += ball.dy; if (ball.x <= 0 || ball.x >= WIDTH - 1) ball.dx *= -1; if (ball.y <= 0) ball.dy *= -1; if (ball.y == paddle.y - 1 && ball.x >= paddle.x && ball.x < paddle.x + paddle.width) ball.dy *= -1; for (auto& b : bricks) { if (b.alive && ball.x == b.x && ball.y == b.y) { b.alive = false; ball.dy *= -1; break; } } } int main() { Ball ball; Paddle paddle; std::vector<Brick> bricks; for (int y = 2; y < 6; ++y) for (int x = 2; x < WIDTH - 2; x += 4) bricks.push_back({x, y}); while (true) { draw(ball, paddle, bricks); updateBall(ball, paddle, bricks); std::this_thread::sleep_for(std::chrono::milliseconds(100)); if (ball.y >= HEIGHT) { std::cout << "Game Over!\n"; break; } } return 0; }
Standard input is empty
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
O
=======
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
O
=======
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
O
=======
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
O
=======
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
O
=======
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # O# # #
=======
# # # # # # # # #
# # # # # # # # #
# # # # # # O # #
# # # # # # # # #
=======
# # # # # # # # #
# # # # # # # # #
# # # # # # # #
# # # # # # #O # #
=======
# # # # # # # # #
# # # # # # # # #
# # # # # # # #
# # # # # # # # #
O
=======
# # # # # # # # #
# # # # # # # # #
# # # # # # # #
# # # # # # # # #
O
=======
# # # # # # # # #
# # # # # # # # #
# # # # # # # #
# # # # # # # # #
O
=======
# # # # # # # # #
# # # # # # # # #
# # # # # # # #
# # # # # # # # #
O
=======
# # # # # # # # #
# # # # # # # # #
# # # # # # # #
# # # # # # # # #
O
=======
# # # # # # # # #
# # # # # # # # #
# # # # # # # #
# # # # # # # # #
O
=======
# # # # # # # # #
# # # # # # # # #
# # # # # # # #
# # # # # # # # #
O
=======
# # # # # # # # #
# # # # # # # # #
# # # # # # # #
# # # # # # # # #
O
=======
# # # # # # # # #
# # # # # # # # #
# # # # # # # #
# # # # # # # # #
O
=======
# # # # # # # # #
# # # # # # # # #
# # # # # # # #
# # # # # # # # #
O
=======
# # # # # # # # #
# # # # # # # # #
# # # # # # # #
# # # # # # # # #
O
=======
# # # # # # # # #
# # # # # # # # #
# # # # # # # #
# # # # # # # # #
O
=======
# # # # # # # # #
# # # # # # # # #
# # # # # # # #
# # # # # # # # #
O
=======
# # # # # # # # #
# # # # # # # # #
# # # # # # # #
# # # # # # # # #
======= O
Game Over!
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.