失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > c语言游戏菜单栏 C语言小游戏之打砖块

c语言游戏菜单栏 C语言小游戏之打砖块

时间:2023-04-27 18:05:09

相关推荐

c语言游戏菜单栏 C语言小游戏之打砖块

//easyx图形库头文件

#include//控制台输入输出头文件

//宏定义:砖块为:5行10列

#define ROW 5

#define COL 10

//砖块数组

int ZhuanKuai[ROW][COL] = { 0 };

//小球坐标

int ballx;

int bally;

//小球的速度一定,坐标均匀的改变

int addx = 1;

int addy = -1;

//判断木板是否接到球

bool starting = false;

//木板坐标

int boardx;

int boardy;

//绘制转块

void DrawZhuanKuai();

//初始化游戏

void InitGame();

//木板移动

void MuBan();

//小球移动

void ballMove();

int main(){

//创建图形窗口

initgraph(400, 600);

//初始化游戏

InitGame();

//建立死循环,让游戏继续

while (1){

//kbhit()-->判断是否有按键按下

//有按键按下--》true

//无按键按下--》false

//检测键盘输入:有输入,移动木板

if (kbhit()){

MuBan();

}

//如果木板接不到小球:终止循环

if (bally > boardy){

break;

}

ballMove();//移动小球

}

//弹出窗口:游戏结束

//"游戏结束!!!"--》提示信息

//"打砖块"--》新生成的窗口标题

//MB_OK--》只有一个【确定】按钮

MessageBox(NULL, L"游戏结束!!!", L"打砖块", MB_OK);

return 0;

}

//...省略函数实现相关代码...

```

## 3. 函数实现相关代码

### 3.1 初始化游戏

```c

//小球坐标

int ballx;

int bally;

//木板坐标

int boardx;

int boardy;

//初始化游戏

void InitGame(){

//初始化小球坐标

ballx = 200;

bally = 580;

//初始化木板坐标

boardx = 170;

boardy = 590;

//绘制转块

DrawZhuanKuai();

//绘制小球

//设置填充颜色:粉红色

setfillcolor(LIGHTRED);

//绘制实心小球

solidcircle(ballx, bally, 10);//坐标 + 半径

//绘制木板

//设置填充颜色:黄色

setfillcolor(YELLOW);

//绘制实心木板

solidrectangle(boardx, boardy, boardx + 60, boardy + 10);

}

```

### 3.2 绘制砖块

```c

//宏定义:砖块为:5行10列

#define ROW 5

#define COL 10

//砖块数组

int ZhuanKuai[ROW][COL] = { 0 };

//绘制转块

void DrawZhuanKuai(){

for (int i = 0; i < ROW; i++){

for (int j = 0; j < COL; j++){

//判断是否有砖块

if (ZhuanKuai[i][j] == 0){

if ((i + j) % 2 == 0){

//设置填充颜色为:天蓝色

setfillcolor(LIGHTCYAN);

//画出填充矩形:左上右下

solidrectangle(j * 40, i * 20, j * 40 + 40, i * 20 + 20);

}

else{

//设置填充颜色为:灰色

setfillcolor(LIGHTGRAY);

//画出填充矩形:左上右下

solidrectangle(j * 40, i * 20, j * 40 + 40, i * 20 + 20);

}

}

}

}

}

```

### 3.3 木板移动

```c

//木板移动

void MuBan(){

//用黑色木板擦除之前的木板

//设置填充颜色:黑色

setfillcolor(BLACK);

//绘制实心木板

solidrectangle(boardx, boardy, boardx + 60, boardy + 10);

//让木板左右移动

switch (getch()){

case 75://向左移动

boardx -= 15;

break;

case 77://向右移动

boardx += 15;

break;

default:break;

}

//防止木板出界

if (boardx <= 0){

boardx = 0;

}

if (boardx >= (400 - 60)) {

boardx = (400 - 60);

}

//重新绘制木板

//设置填充颜色:黄色

setfillcolor(YELLOW);

//绘制实心木板

solidrectangle(boardx, boardy, boardx + 60, boardy + 10);

}

```

### 3.4 小球移动

```C

//小球的速度一定,坐标均匀的改变

int addx = 1;

int addy = -1;

//判断木板是否接到球

bool starting = false;

//移动小球

void ballMove(){

//用黑色小球擦除之前的小球

//绘制小球

//设置填充颜色:黑色

setfillcolor(BLACK);

//绘制实心小球

solidcircle(ballx, bally, 10);//坐标 + 半径

//开始绘制

BeginBatchDraw();

//小球碰墙壁

//小球半径为:10

if (ballx >= (400 - 10) || ballx <= (0 + 10)) {

addx = -1 * addx;

}

if (bally <= 10){

addy = -1 * addy;

}

//小球碰砖块

int flag = 0;//标记小球打到砖块

for (int i = 0; i < ROW; i++){

for (int j = 0; j < COL; j++){

//砖块坐标

int x = j * 40;

int y = i * 20;

//小球遇到砖块

if (ZhuanKuai[i][j] == 0 && x - ballx <= 10 && ballx - x <= 50 && bally - y >= 10 && bally - y <= 30) {

addy = -1 * addy;

ZhuanKuai[i][j] = 1;

flag = 1;//控制跳出外层循环

//让砖块消失

//设置填充颜色:黑色

setfillcolor(BLACK);

//绘制实心木板

solidrectangle(x, y, x + 40, y + 20);

break;//退出内层循环

}

}

if (flag){

break;//退出外层循环

}

}

//小球碰木板

if (starting&&boardx - ballx <= 10 && ballx - boardx <= 70 && boardy - bally <= 10) {

addy = -1 * addy;

}

starting = true;

ballx += addx;

bally += addy;

//移动到新位置的小球

//设置填充颜色:粉色

setfillcolor(LIGHTRED);

//绘制实心小球

solidcircle(ballx, bally, 10);//坐标 + 半径

//结束绘制

FlushBatchDraw();

Sleep(5);//延时5毫秒

}

```

## 4. 成果展示

![](/image_editor_upload/085513_80195.png)

如果觉得《c语言游戏菜单栏 C语言小游戏之打砖块》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。