天天看點

c語言控制台小遊戲,C語言實作控制台掃雷小遊戲.pdf

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