為了複習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...