C語言 掃雷遊戲

2021-08-30 04:41:45 字數 3472 閱讀 1076

要求:

1:第一下輸入座標,不炸死。

2:座標周圍沒有雷,可以實現展開。

思想:

(一)用乙個測試函式test()完成使用者的整個遊戲體驗,放在主函式中。

(二)test()函式中應該完成的內容:選單選擇和遊戲部分。

選單選擇即menu()函式;

遊戲部分即game()函式;

因為是遊戲,所以以使用者體驗為先,先讓使用者玩一把。在這應該使用do…while()語句。

!!!

(三)game()函式的具體實現:

同三子棋遊戲,給game函式單獨建立乙個原始檔。

掃雷遊戲的思想:

首先需要乙個雷盤存放雷;

1,雷盤有行和列,因此應該定義乙個二維陣列。row為行,col為列。

在掃雷的過程中,如果選擇乙個座標,則會計算周圍座標的雷數。如果輸入座標為(0,0),則該座標周圍並非都是座標,無法計算,因此在設計雷盤時應該大一圈。定義為mine[rows][cols],定義rows=row+2,cols=col+2。

雷盤陣列——mine[rows][cols]

2,當輸入乙個座標時,會計算周圍座標的雷數,如果把計算後的雷數直接放在雷盤中,則下乙個座標計算時就會出錯,因此應該定義乙個新的陣列用來存放雷的資訊information[rows][cols]。該陣列應該和雷盤陣列一樣大。

存放雷資訊的陣列——information[rows][cols]

3,兩個陣列中都存放字元。

4,給兩個陣列賦初值。——initfirst()

5,布雷——setmine()

6,展示雷盤陣列,展示資訊陣列——display()

7,排查雷——fimdmine()

排查雷的過程中:

需要乙個函式實現計算該座標周圍雷數——minecount()

輸入乙個座標,座標周圍沒有雷,實現座標展開 ——openmine()

如果輸入的第乙個座標為雷,不能讓使用者被炸死,轉移雷的位置

——firstmine()

具體**如下:

1:將所有的重定義,函式宣告,引用的標頭檔案放在建立的標頭檔案中

#ifndef  __game__h__

#define __game__h__

#define row 9

#define col 9

#define rows row + 2

#define cols col + 2

#define count 10

#include #include #include void initfirst(char arr[rows][cols], int rows, int cols,char set);

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

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

void fimdmine(char mine[rows][cols],char information[rows][cols], int row, int col);

int minecount(char mine[rows][cols], int x, int y);

void firstmine(char mine[rows][cols], int i, int j);

void openmine(char mine[rows][cols], char information[rows][cols], int x, int y);

#endif __game__h__

2,主函式部分**如下

#define _crt_secure_no_warnings

#include "game.h"

//列印選單

void menu()

//遊戲部分

void game()

; char information[rows][cols] = ;

//給兩個陣列分別賦初值

initfirst(mine, rows, cols,'0');

initfirst(information, rows, cols,'*');

//布雷

setmine(mine,row,col);

//列印雷盤

display(mine, row, col);

display(information, row, col);

//排查雷

fimdmine(mine, information, row, col);

}//測試函式

void test()

} while (input);

}int main()

3,遊戲部分**如下

//掃雷遊戲

#define _crt_secure_no_warnings

#include "game.h"

//賦初值

void initfirst(char arr[rows][cols], int rows, int cols, char set) }}

//布雷

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

} }}//展示布局,可展示雷盤,也可展示資訊盤,根據情況而定

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

printf("\n");

for (i = 1; i <= row; i++)

printf("\n"); }}

//保證第一下不被炸死,如果輸入的第乙個座標是雷,則交換雷的位置,將乙個非雷與雷交換

void firstmine(char mine[rows][cols], int i, int j)

} }}//計算該座標周圍雷的個數

int minecount(char mine[rows][cols], int x, int y)

//若輸入座標周圍雷數為0,則展開周圍一周,直至雷數為0

void openmine(char mine[rows][cols],char information[rows][cols], int x, int y)}}

} else

}}//排查雷

void fimdmine(char mine[rows][cols], char information[rows][cols], int row, int col)

else

}else}}

display(information, row, col);

}} else

if (win == row*col - count)

}}

C語言 掃雷遊戲

標頭檔案 ifndef mine h define mine h define line 10 define list 10 define rows 6 define cows 6 int game char userboard line 2 list 2 char playerboard line...

掃雷遊戲C語言

掃雷遊戲c語言 include include include define max row 9 define max col 9 define max mine count 10 char mine map max row max col 雷的位置 char show map max row ma...

C語言 掃雷遊戲

簡單描述 輸入要要掃的位置.如果是雷,則遊戲失敗.如果將所有不是雷的位置都掃了一遍,則遊戲勝利.主要細節 初始化 玩家掃雷圖,地雷布局圖 for int row 0 row row row for int row 0 row row row int count 0 while count 列印地圖 ...