c语言游戏菜单栏,C语言小游戏之打砖块
//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. 成果展示

總結(jié)
以上是生活随笔為你收集整理的c语言游戏菜单栏,C语言小游戏之打砖块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 类 加载 初始化_java中类
- 下一篇: win7 安装c语言环境变量,win7下