C語言實現掃雷

2021-10-18 01:39:53 字數 2385 閱讀 8175

首先來講一講掃雷的規則:隨便點乙個格仔,會有一塊,上面的數字就代表數字周圍八個格仔會有幾個雷,是1他周圍就只有1個雷,2就有兩個雷······

寫**的時候要注意構思**的框架,每個函式實現的意義在**中都有體現,首先看一下頭檔案game.h

#define row 9

#define col 9

#include

#include

#include

//防止查雷時越界,多開兩行兩列

#define rows row+2

#define cols col+2

enum difficulty

;void

initboard

(char arr[rows]

[cols]

,int row,

int col,

char val)

;void

showboard

(char arr[rows]

[cols]

,int row,

int col)

;//生成雷

void

generatemine

(char arr[rows]

[cols]

,int row,

int col,

int difficulty)

;//獲取[i][j]位置周圍的雷

intgetmine

(char mine[rows]

[cols]

,int i,

int j)

;//遇到周圍沒有雷時,對周圍進行展開搜尋

void

searchmine

(char mine[rows]

[cols]

,char show[rows]

[cols]

,int i,

int j)

;

第二個就是實現每乙個函式game.c

#include

"game.h"

void

initboard

(char arr[rows]

[cols]

,int row,

int col,

char val)}}

void

showboard

(char arr[rows]

[cols]

,int row,

int col)

printf

("\n");

for(

int i =

1; i <= row;

++i)

else

}printf

("\n");

}printf

("\n");

}void

generatemine

(char arr[rows]

[cols]

,int row,

int col,

int difficulty)}}

intgetmine

(char mine[rows]

[cols]

,int i,

int j)

void

searchmine

(char mine[rows]

[cols]

,char show[rows]

[cols]

,int i,

int j)

show[i]

[j]=

' ';

int posarr[8]

[2]=

,,,,

,,,}

;//8個方向空格進行搜尋

for(

int k =

0; k <8;

++k)

//1、如果此方向一圈有雷,則顯示雷數量,不再往下搜尋

//2、如果此方向一圈沒有雷,則遞迴繼續往它周邊搜尋

int minenum =0;

minenum =

getmine

(mine, row, col);if

(minenum >0)

else

}}

其次建立test.c進行測試

#include

"game.h"

#include

"windows.h"

void

game()

if(mine[i]

[j]==

'1')

else

else}}

}int

main()

C語言實現掃雷

思路,建立兩個二維陣列,乙個作為雷區,乙個作為顯示區,雷區只在程式結束時顯示。每次使用者操作後重新整理顯示區的陣列成員。建立雷區二維陣列12 12,顯示區二維陣列10 10,用 0 代表安全區,1 代表雷區。雷區的陣列長度設定比顯示區的陣列長度多2,方便邊框區域計算周圍地雷數量。標頭檔案宣告 inc...

c語言實現掃雷

void menu 樸實無華的選單 因為我們這裡要有乙個陣列來存放雷,乙個陣列給玩家看,所以在這裡我們用兩個陣列,給我們設定雷的我們暫且稱為my board,給玩家看的稱為y board,如下 示例 char ret 0 在這裡建立兩個陣列自己看的叫my board,將要放置雷的地方置為1,其他地方...

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...