C語語言言實實作現控控制制台台掃掃雷雷小小遊遊戲戲
C語言實作控制台“掃雷”小遊戲
根據以往的遊戲經驗,我們能首先可以确定掃雷遊戲勝利的規 是:翻開所有不是雷的區域才能算是勝利。
接下來我們需要确定整個程式的設計思路:
1.首先,我們定義兩個9*9 的二維數還是未翻開的狀态組。第一個數組用來表示雷區地圖的展開情況,即每個素組元素的位置的
狀态是處于展開狀态還是未展開狀态,我們命名為showMap()。第二個數組我們用來表示地雷的分布情況,素組中的每個元素位
置都被标記為是否為地雷,我們命名為minMap()。
2.初始化兩個地圖,并将地圖列印出來。
3.玩家通過輸入二維數組的坐标進行位置輸入,翻開地圖位置。
4 .判斷玩家輸入的位置是否合法。
5.判斷玩家輸入的位置是否有地雷,如果有地雷 直接宣布遊戲結束;若果沒有地雷 繼續進行遊戲。
6.如果繼續遊戲, 玩家輸入的位置處會顯示附近地雷的個數。
第第一一步步,此處通過構造menu()函數搭建一個簡單的互動菜單和玩家互動,用來判斷是否開始進行一局遊戲。
#define _CRT_SECURE_NO_WARNINGS
#include
#include
宏定義
#define MAX_ROW 9
#define MAX_COL 9
#define DEFAULT_MINE_COUNT 10
int menu() {
printf("======================\n");
printf(" 1. 開始遊戲\n");
printf(" 0. 結束遊戲\n");
printf("======================\n");
printf(" 請輸入您的選擇: ");
int choice = 0;
scanf("%d", &choice);
return choice;
}
int main() {
srand((unsigned int)time(0));
while (1) {
int choice = menu();
if (choice == 1) {
game(); 此處調用了game()函數.
}
else if (choice == 0) {
printf("Goodbye!\n");
break;
}
else {
printf("您的輸入有誤!\n");
}
}
system("pause");
return 0;
}
第第二二步步,對第一步中調用的game()函數進行構造。game()函數為核心功能函數,其主要任務是完成基本流程。
1.建構init()函數,對兩個二維數組進行初始化操作。初始化 showMap, 将數組所有元素全都設為 * 。初始化 mineMap, 先全設
為 ‘ ', 然後随機生成 N 個 ‘ 1' ,此處的'1'就代表地雷, N 的值就是 DEFA ULT_ MINE_COUNT ,也就是地雷的數量。
void init(char showMap[MAX_ROW][MAX_COL],
char mineMap[MAX_ROW][MAX_COL]) {
for (int row = 0; row < MAX_ROW; row++) {
for (int col = 0; col < MAX_COL; col++) {
showMap[row][col] = '*';
}
}
for (int row = 0; row < MAX_ROW; row++) {
for (int col = 0; col < MAX_COL; col++) {
mineMap[row][col] = '0 ';