【无标题】

这是花费两月半制作的c++小球打砖游戏

制作不易,勿喷~

cpp 复制代码
在这里插入代码片

#include

#include <conio.h>

#include <windows.h>

using namespace std;

bool gameOver;

const int width = 40;

const int height = 20;

int paddleX, ballX, ballY, ballDirX, ballDirY;

int bricks510;

int score;

void Setup() {

gameOver = false;

paddleX = width/2;

ballX = width/2;

ballY = height-2;

ballDirX = -1;

ballDirY = -1;

score = 0;

复制代码
for(int i=0; i<5; i++) {
    for(int j=0; j<10; j++) {
        bricks[i][j] = 1;
    }
}

}

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-2 && j <= paddleX+2)
            cout << "=";
        else {
            bool brick = false;
            for(int k=0; k<5; k++) {
                for(int l=0; l<10; l++) {
                    if(bricks[k][l] && i == k+1 && j >= l*4 && j <= l*4+3) {
                        cout << "[]";
                        j++; // 修正砖块显示错位
                        brick = true;
                    }
                }
            }
            if(!brick) cout << " ";
        }
        
        if(j == width-1) cout << "#";
    }
    cout << endl;
}

for(int i=0; i<width+2; i++)
    cout << "#";
cout << endl;
cout << "Score:" << score << endl;

}

void Input() {

if(_kbhit()) {

char key = _getch();

if(key == 'a' && paddleX > 3) paddleX--;

if(key == 'd' && paddleX < width-3) paddleX++;

if(key == 'x') gameOver = true;

}

}

void Logic() {

ballX += ballDirX;

ballY += ballDirY;

复制代码
if(ballX <= 0 || ballX >= width-1) ballDirX *= -1;
if(ballY <= 0) ballDirY *= -1;

if(ballY == height-2 && ballX >= paddleX-2 && ballX <= paddleX+2)
    ballDirY = -1;

if(ballY >= height) gameOver = true;

for(int i=0; i<5; i++) {
    for(int j=0; j<10; j++) {
        if(bricks[i][j] && ballY == i+1 && 
           ballX >= j*4 && ballX <= j*4+3) {
            bricks[i][j] = 0;
            ballDirY *= -1;
            score += 10;
        }
    }
}

}

int main() {

Setup();

int a;

cout<<"请输入速度";

cin>>a;

while(!gameOver) {

Draw();

Input();

Logic();

Sleep(a);

}

return 0;

}

相关推荐
atunet4 分钟前
关于从哈希冲突看缓存设计的实践与权衡7
算法
zjun10011 小时前
C++:单例模式
c++·单例模式
-银雾鸢尾-5 小时前
C#中的拓展方法
开发语言·c#
guodingdingh7 小时前
软件开发工作问题总结0718
java·开发语言·数据库
GuWenyue9 小时前
传统Agent工具两大痛点!300行代码落地MCP跨语言工具,彻底解耦LLM与工具
前端·人工智能·算法
优橙教育9 小时前
5G网优培训 vs Java开发:转行选哪个?
java·开发语言·5g
同勉共进10 小时前
记一例 vibe coding + gcc bug 导致的线程池死锁问题
c++·线程池·gcc·死锁·vibe coding
我叫洋洋10 小时前
C ++ [ hello world ]
c语言·c++·算法
SeaTunnel11 小时前
从 Python Script 地狱到标准化数据集成框架
大数据·开发语言·python·程序员·代码·seatunnel
碎光拾影11 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库