C語言遞迴實現掃雷小遊戲

2021-10-10 12:08:25 字數 1357 閱讀 7388

為了複習c語言的語法嘛,就簡單的寫了一下掃雷這樣乙個小遊戲,完全在命令列視窗執行。思路也比較簡單,採用陣列來模擬棋盤。乙個用來模擬地雷的分布的陣列。乙個用來列印玩家開始看到的陣列。在選擇座標後展開周圍的地方。判斷未展開的格仔數與地雷數是否相等。結束遊戲。

簡單的乙個初始介面,用來選擇開始遊戲和退出。也可以在這裡在後續加上難度選擇等等功能。

void

showmenu()

棋盤採用二維陣列來構成,為了保證遊戲可以重複開始,在每次開始時都要對陣列進行初始化,然後隨機布「雷」。為了方便在接下來掃瞄展開位置周圍是否有「雷」。我們將陣列全部初始化為0,將「雷」標記為1。這樣就可以布置好地圖。

void

initmap()

while

(count != bang_number)

//埋雷}}

void

show_bangmap()

}

在判斷目標周圍是否有雷時,將周圍所有值相加,如果結果是0,則周圍沒有雷,將「 」(空格)返回給該點。否則將「雷」數返回。

在展開時,採用遞迴的方式,如果改點周圍沒有「雷「,且周圍的點還未展開時,遞迴展開這個位置就好。一般而言。乙個數的周圍會有8個位置,所以需要做8次判斷。但是在邊緣時,會產生數字越界的警告,因此在定義陣列時,將陣列的範圍加大一圈。我們需要乙個10x10的地圖時,定義乙個12x12的陣列,在初始化時,將所有元素賦0。但在埋」雷「時,限制範圍為10x10。

int

getbangnum

(int x,

int y)

//判斷雷數

void

openmap

(int x,

int y)

//判斷展開

else

show_map[x]

[y]=

getbangnum

(x, y)+48

;

判斷遊戲結束很簡單,只需要判斷在地圖中的「*」是否與我們開始埋下的「雷」元素是否相等。如果相等說明目前地圖中只有是「雷」的元素還沒有展開,則遊戲結束。

int

isfull()

// 判斷遊戲是否結束

void

playing()

else

//沒有踩雷if(

isfull()

== true)

//判斷勝利

}else

printf

("輸入有誤");

}}void

test()

}}

C語言小遊戲 掃雷

1.這個小遊戲由兩個原始檔,乙個標頭檔案分工合作完成。test.c game.c game.h 2.確定基本框架,在test.c中寫主函式以及遊戲所需的基本框架 例如 menum switch 3.先確定這個遊戲需要的函式功能,在game.h中進行函式宣告,game.c中進行函式的定義,test.c...

C語言 掃雷小遊戲

第一次下子,不炸死 座標周圍沒雷,可以實現展開 遊戲結束後展示玩家用時 game.h ifndef game h define game h include include include include define row 12 define col 12 define count 10 棋盤中...

C語言小遊戲 掃雷

這個小遊戲也分為三個部分的 分別是標頭檔案,測試 和遊戲 1.注意初始化以及使用getwincount函式的時候字元1和字元0的使用。2.為了玩家的體驗,第一步不可以被炸死。3.要擴充套件,這時會用到遞迴,注意遞迴的使用。4.可以新增標記,優化遊戲。標頭檔案 game.h ifndef game h...