C語言 掃雷高階版 可進行展開

2021-09-30 20:35:23 字數 2029 閱讀 7090

這次是寫乙個掃雷的小遊戲,可實現周圍沒雷時展開和第一次排雷不被炸死(防止歐皇直接暴斃!)。

首先我們先梳理**思路:

1、既然要展示和布雷,所以我們需要2個二維陣列,乙個用來展示給觀眾,乙個顯示雷利於我們程式設計,我們將雷陣列初始化為 0 ,將展示的陣列初始化為 * ,保持神秘~

2、我們需要將雷布置到雷陣列中去,當然是隨機布置;

3、我們還需要乙個安全函式,就是當第一次排雷的時候不被炸死;(就是如果第一次排的是雷,就將此位置的雷轉移)

4、排雷的過程,包括了如何展開,還有表明旁邊有幾顆雷;

1、初始化陣列(mine和show),而且為了邊上的座標也能排雷,所以需要建的陣列要比棋盤多兩行兩列。然後就是初始化陣列(mine初始化為字元0,show初始化為 *)

void

initboard

(char board[rows]

[cols]

,int rows,

int cols,

char set)

}}

2、列印陣列,當然要都列印出來以便我們測試(為了排雷方便,我們給陣列加上了序號)
void

displayboard

(char board[rows]

[cols]

,int row,

int col)

printf

("\n");

for(i =

1; i <= row; i++

)printf

("\n");

}printf

("----------------------------------\n");

}

3、將雷布置到 mine陣列中去,這裡我們需要用到隨機數,我們用的是rand()這個函式來產生隨機數,當然範圍要控制在陣列範圍中
void

setmine

(char mine[rows]

[cols]

,int row,

int col)

}}

4、安全函式,這個函式的作用是保證我們第一次排雷不被炸死…
void

safemine

(char mine[rows]

[cols]

,char show[rows]

[cols]

,int row,

int col)

ret--;}

}openmine

(mine, show, row, col,x,y)

;displayboard

(show, row, col)

;}

void

findmine

(char mine[rows]

[cols]

,char show[rows]

[cols]

,int row,

int col)

else}}

else}if

(mywin

(show, row, col)

== easy_count)

}void

openmine

(char mine[rows]

[cols]

,char show[rows]

[cols]

,int row,

int col,

int x,

int y)

else

}

6、其中有乙個getmine函式是用來統計周圍有多少雷,這個函式寫的很巧妙,這也是我們為什麼非要設計0和1作為雷陣列
int

getmine

(char mine[rows]

[cols]

,int x,

int y)

總結:這個遊戲總體來說不是很難,難點就在於展開的那裡,是用遞迴來進行完成的,總體設計和三子棋的介面一樣,我們需要注意的就是雷的布置和雷的統計還有雷的展開。

C語言版掃雷

用c語言實現掃雷,首先應該有基本的思路,建立兩個相同大小的陣列,乙個用於布雷 初始化為全0,布雷時將雷置為1 另乙個給使用者展示 初始化為星號,使用者輸入座標後統計周圍雷的分布並列印雷的個數 由於需要統計每個座標周圍類的個數,所以將陣列建立大一圈,以方便統計。若輸了,列印出雷陣告訴玩家雷的分布。具體...

掃雷遊戲初級版(C語言)

主要思路 先開始設定兩個陣列,乙個放置雷的資訊,乙個是玩家玩遊戲時顯示的棋盤 對兩個陣列進行初始化 布置雷的資訊,將雷的資訊布置在第乙個陣列中 列印棋盤,此時只需要列印玩家玩遊戲的棋盤就可以 在列印出來的棋盤輸入座標資訊掃雷,輸入的座標周圍有雷的話,會顯示相應的數字 1 主函式 define crt...

C語言版簡單掃雷遊戲

我們在設計的時候,首先將其分為三個部分,分別為標頭檔案game.h遊戲介面及主要實現的功能函式部分test.c,還有就是最重要的遊戲實現部分game.c。我們通過game.h將所有用到的標頭檔案引用進去,目的是更加直觀的讓讀者看懂我們的結構,另外我們思路也會通暢一些。include include ...