【c++】超好玩游戏
#include <iostream>
#include <vector>
#include <conio.h>
#include <windows.h>
#include <time.h>using namespace std;// 游戏常量
const int WIDTH = 40;
const int HEIGHT = 20;
const int PADDLE_WIDTH = 5;// 方向枚举
enum Direction { STOP = 0, LEFT, RIGHT };class BreakoutGame {
private:int ballX, ballY; // 球的位置int ballDirX, ballDirY; // 球的方向int paddleX; // 挡板位置int score; // 分数bool gameOver; // 游戏结束标志vector<vector<bool>> bricks; // 砖块矩阵public:BreakoutGame() {// 初始化游戏状态resetGame();}// 重置游戏void resetGame() {ballX = WIDTH / 2;ballY = HEIGHT - 5;ballDirX = 1;ballDirY = -1;paddleX = (WIDTH - PADDLE_WIDTH) / 2;score = 0;gameOver = false;// 初始化砖块bricks.resize(5, vector<bool>(WIDTH - 2, true));}// 绘制游戏界面void draw() {system("cls"); // 清屏// 绘制顶部边界for (int i = 0; i < WIDTH + 2; i++)cout << "#";cout << endl;// 绘制游戏区域for (int i = 0; i < HEIGHT; i++) {for (int j = 0; j < WIDTH; j++) {if (j == 0)cout << "#"; // 左边界// 绘制球if (i == ballY && j == ballX)cout << "O";// 绘制挡板else if (i == HEIGHT - 1 && j >= paddleX && j < paddleX + PADDLE_WIDTH)cout << "=";// 绘制砖块else if (i < 5 && j > 0 && j < WIDTH - 1 && bricks[i][j-1])cout << "■";elsecout << " ";if (j == WIDTH - 1)cout << "#"; // 右边界}cout << endl;}// 绘制底部边界for (int i = 0; i < WIDTH + 2; i++)cout << "#";cout << endl;// 显示分数cout << "分数: " << score << endl;if (gameOver) {if (score == (WIDTH - 2) * 5)cout << "恭喜你赢了!按R重新开始,按Q退出" << endl;elsecout << "游戏结束!按R重新开始,按Q退出" << endl;}}// 处理用户输入void input() {if (_kbhit()) {switch (_getch()) {case 'a':if (paddleX > 0)paddleX--;break;case 'd':if (paddleX + PADDLE_WIDTH < WIDTH)paddleX++;break;case 'q':gameOver = true;break;case 'r':resetGame();break;default:break;}}}// 更新游戏状态void update() {if (gameOver) return;// 移动球ballX += ballDirX;ballY += ballDirY;// 检测左右边界碰撞if (ballX <= 0 || ballX >= WIDTH - 1)ballDirX *= -1;// 检测上边界碰撞if (ballY <= 0)ballDirY *= -1;// 检测下边界(游戏结束)if (ballY >= HEIGHT) {gameOver = true;return;}// 检测挡板碰撞if (ballY == HEIGHT - 1 && ballX >= paddleX && ballX < paddleX + PADDLE_WIDTH)ballDirY *= -1;// 检测砖块碰撞if (ballY < 5 && ballY >= 0 && ballX > 0 && ballX < WIDTH - 1) {int brickX = ballX - 1;int brickY = ballY;if (bricks[brickY][brickX]) {bricks[brickY][brickX] = false;score++;ballDirY *= -1;// 检查是否所有砖块都被消除bool allCleared = true;for (int i = 0; i < 5; i++) {for (int j = 0; j < WIDTH - 2; j++) {if (bricks[i][j]) {allCleared = false;break;}}if (!allCleared) break;}if (allCleared)gameOver = true;}}}// 运行游戏主循环void run() {while (!gameOver) {draw();input();update();Sleep(60); // 控制游戏速度}}
};int main() {cout << "简易打砖块游戏" << endl;cout << "使用A和D键移动挡板,Q键退出,R键重新开始" << endl;cout << "按任意键开始游戏..." << endl;_getch();BreakoutGame game;game.run();return 0;
}
结语
希望你也能学会ヾ(◍°∇°◍)ノ゙
制作不易,点个赞吧!Thanks♪(・ω・)ノ