这是花费两月半制作的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 bricks[5][10];
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;
}