C語言實現掃雷遊戲

2021-08-29 04:41:49 字數 3253 閱讀 1689

今天我們來用c語言實現另乙個眾所周知的小遊戲——掃雷;

首先,與五子棋不同的是,為了不讓雷被玩家直接看到,我們需要建立兩個棋盤。乙個用於儲存雷,我們將其命名為mine盤,乙個能直觀的展現給玩家,我們將其命名為show盤;

其次,為了算清玩家選擇的座標周圍有多少雷,我們無可避免的要訪問mine盤對應座標周圍一圈的類容。此時就出現問題了,最外圍一圈的雷周圍的類容是隨機值,會影響判斷雷數,所以建立時我們必須建立大一圈的mine盤,對應show盤也要大一圈,即建立的二維陣列兩個下標均加一;

為了提公升遊戲體驗,在原遊戲的基礎上新增兩個函式:

1:當玩家選中的座標周圍沒有雷時,自動向周圍八個座標拓展;

2:首輪排雷保護,即在首輪踩到雷就將雷移走,確保首輪不被炸死;

**實現:

依舊將遊戲外圍的框架做好,使得玩家能重複玩掃雷

#define _crt_secure_no_warnings 1

#include "game.h"//呼叫自己定義的game庫

void menu()

//主函式

int main()

} while(input);

return 0;

}

void game()

; char show[rows][cols] = ;

int time1 = (int)time(null);

int time2 = 0;

init_arr(mine,rows,cols,' ');

init_arr(show,rows,cols,' ');

set_mine(mine,row,col,easy_mode);

print_arr(show,row,col);

first_round(mine,show,row,col);

while(1)

else if('l' == w)

}time2 = (int)time(null);

printf("用時為%ds\n",time2-time1);

}

將遊戲中所有需要的函式整理到自定義的game庫中;

#ifndef  __game_h__

#define __game_h__

#define rows row+2

#define cols col+2

#define row 9

#define col 9

#define easy_mode 10

#include #include #include #include #include void game();

//初始化棋盤

void init_arr(char arr[rows][cols],int row,int col,char n);

//列印棋盤

void print_arr(char arr[rows][cols],int row,int col);

//設定雷

void set_mine(char arr[rows][cols],int row,int col,int n);

//玩家掃雷

void sweep_mine(char mine[rows][cols],char show[rows][cols],int row,int col);

//計算座標周圍雷的數量

int num_mine(char arr[rows][cols],int x,int y);

//座標雷數為0時拓展周圍

void expand(char show[rows][cols],char mine[rows][cols],int row,int col, int x,int y);

//電腦進行掃雷操作

void com_sweep(char mine[rows][cols],char show[rows][cols],int x,int y);

//判斷勝負

char is_win(char show[rows][cols],int row,int col);

//返回主選單

void re_menu();

//首輪保護

void first_round(char mine[rows][cols],char show[rows][cols],int row,int col);

#endif //__game_h__

最後,定義以上函式

void init_arr(char arr[rows][cols],int row,int col,char n)

void print_arr(char arr[rows][cols],int row,int col)

printf("\n");

for(i=0; i0) }

}int num_mine(char arr[rows][cols],int x,int y)

} return n;

}void expand(char show[rows][cols],char mine[rows][cols],int row,int col, int x,int y) }}

void com_sweep(char mine[rows][cols],char show[rows][cols],int x,int y)

}void sweep_mine(char mine[rows][cols],char show[rows][cols],int row,int col)

else

}else

printf("輸入的座標已經掃瞄過,請重新輸入!\n");

} else

printf("輸入的座標有誤,請重新輸入!\n"); }}

char is_win(char show[rows][cols],int row,int col)

} if(easy_mode == num_void)

return 'w';

else

return ' ';

}void re_menu()

void first_round(char mine[rows][cols],char show[rows][cols],int row,int col)

}mine[x][y] = ' ';

}com_sweep(mine,show,x,y);

break;

} else

printf("輸入的座標有誤,請重新輸入!\n");

}}

C語言實現掃雷遊戲

game.h define crt secure no warnings 1 include include include include define sum 10 define row 11 define col 11 void print void init char mine row co...

掃雷遊戲 C語言實現

1.使用兩個二維陣列表示地圖 a show map char 表示翻開 數字 和未翻開 的狀態 b mine map char 表示地雷 1 和不是地雷 0 的狀態 2.對陣列進行初始化 3.列印地圖 show map 4.提示玩家輸入乙個座標表示要翻開乙個位置 5.判定是否踩雷 6.如果未踩雷,判...

C語言實現掃雷遊戲

思路 使用兩個二維陣列分別存放布置好的雷和排查出來的雷 初始化棋盤並展示棋盤 開始不展示雷的位置 隨機找座標布置雷 輸入座標排查雷 若輸入的座標是雷,則被炸死 若輸入的座標不是雷,則統計周圍有幾個雷 test.c define crt secure no warnings 1 include gam...