日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2025/3/12 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言游戏菜单栏,C语言小游戏之打砖块 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

//easyx圖形庫頭文件

#include//控制臺輸入輸出頭文件

//宏定義:磚塊為:5行10列

#define ROW 5

#define COL 10

//磚塊數(shù)組

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

//小球坐標(biāo)

int ballx;

int bally;

//小球的速度一定,坐標(biāo)均勻的改變

int addx = 1;

int addy = -1;

//判斷木板是否接到球

bool starting = false;

//木板坐標(biāo)

int boardx;

int boardy;

//繪制轉(zhuǎn)塊

void DrawZhuanKuai();

//初始化游戲

void InitGame();

//木板移動

void MuBan();

//小球移動

void ballMove();

int main(){

//創(chuàng)建圖形窗口

initgraph(400, 600);

//初始化游戲

InitGame();

//建立死循環(huán),讓游戲繼續(xù)

while (1){

//kbhit()-->判斷是否有按鍵按下

//有按鍵按下--》true

//無按鍵按下--》false

//檢測鍵盤輸入:有輸入,移動木板

if (kbhit()){

MuBan();

}

//如果木板接不到小球:終止循環(huán)

if (bally > boardy){

break;

}

ballMove();//移動小球

}

//彈出窗口:游戲結(jié)束

//"游戲結(jié)束!!!"--》提示信息

//"打磚塊"--》新生成的窗口標(biāo)題

//MB_OK--》只有一個【確定】按鈕

MessageBox(NULL, L"游戲結(jié)束!!!", L"打磚塊", MB_OK);

return 0;

}

//...省略函數(shù)實(shí)現(xiàn)相關(guān)代碼...

```

## 3. 函數(shù)實(shí)現(xiàn)相關(guān)代碼

### 3.1 初始化游戲

```c

//小球坐標(biāo)

int ballx;

int bally;

//木板坐標(biāo)

int boardx;

int boardy;

//初始化游戲

void InitGame(){

//初始化小球坐標(biāo)

ballx = 200;

bally = 580;

//初始化木板坐標(biāo)

boardx = 170;

boardy = 590;

//繪制轉(zhuǎn)塊

DrawZhuanKuai();

//繪制小球

//設(shè)置填充顏色:粉紅色

setfillcolor(LIGHTRED);

//繪制實(shí)心小球

solidcircle(ballx, bally, 10);//坐標(biāo) + 半徑

//繪制木板

//設(shè)置填充顏色:黃色

setfillcolor(YELLOW);

//繪制實(shí)心木板

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

}

```

### 3.2 繪制磚塊

```c

//宏定義:磚塊為:5行10列

#define ROW 5

#define COL 10

//磚塊數(shù)組

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

//繪制轉(zhuǎn)塊

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){

//設(shè)置填充顏色為:天藍(lán)色

setfillcolor(LIGHTCYAN);

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

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

}

else{

//設(shè)置填充顏色為:灰色

setfillcolor(LIGHTGRAY);

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

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

}

}

}

}

}

```

### 3.3 木板移動

```c

//木板移動

void MuBan(){

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

//設(shè)置填充顏色:黑色

setfillcolor(BLACK);

//繪制實(shí)心木板

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);

}

//重新繪制木板

//設(shè)置填充顏色:黃色

setfillcolor(YELLOW);

//繪制實(shí)心木板

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

}

```

### 3.4 小球移動

```C

//小球的速度一定,坐標(biāo)均勻的改變

int addx = 1;

int addy = -1;

//判斷木板是否接到球

bool starting = false;

//移動小球

void ballMove(){

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

//繪制小球

//設(shè)置填充顏色:黑色

setfillcolor(BLACK);

//繪制實(shí)心小球

solidcircle(ballx, bally, 10);//坐標(biāo) + 半徑

//開始繪制

BeginBatchDraw();

//小球碰墻壁

//小球半徑為:10

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

addx = -1 * addx;

}

if (bally <= 10){

addy = -1 * addy;

}

//小球碰磚塊

int flag = 0;//標(biāo)記小球打到磚塊

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

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

//磚塊坐標(biāo)

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;//控制跳出外層循環(huán)

//讓磚塊消失

//設(shè)置填充顏色:黑色

setfillcolor(BLACK);

//繪制實(shí)心木板

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

break;//退出內(nèi)層循環(huán)

}

}

if (flag){

break;//退出外層循環(huán)

}

}

//小球碰木板

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

addy = -1 * addy;

}

starting = true;

ballx += addx;

bally += addy;

//移動到新位置的小球

//設(shè)置填充顏色:粉色

setfillcolor(LIGHTRED);

//繪制實(shí)心小球

solidcircle(ballx, bally, 10);//坐標(biāo) + 半徑

//結(jié)束繪制

FlushBatchDraw();

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

}

```

## 4. 成果展示

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

總結(jié)

以上是生活随笔為你收集整理的c语言游戏菜单栏,C语言小游戏之打砖块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。