c 實現掃雷遊戲

2022-07-18 16:48:36 字數 3049 閱讀 3277

設計思路

定義乙個結構體,裡面存放每乙個格仔是否被翻開,已經地雷和格仔周圍地雷數量。用結構體定義乙個二維陣列,隨機放入特定數量的地雷。玩家輸入要翻開的格仔的行數和列數。用乙個函式來翻開目標格仔,如果是地雷遊戲失敗,否則用乙個函式統計目標格仔周圍的地雷數。如果周圍沒有地雷,則遞迴使用乙個函式將附近周圍沒有地雷的格仔全部開啟,最後判斷是否遊戲勝利,沒有就繼續讓玩家輸入行數和列數。

**實現

1 #include2 #include3 #include4

5#define height 10 //

定義地圖高度

6#define widht 10 //

定義地圖寬度

7#define boon_num 10 //

定義地雷數量89

struct

square10;

14 square map[height][widht]; //

定義地圖

1516

//地圖初始化

17void

csh()

1827

28//

隨機地雷

29srand(time(null));

30 p = &map[rand() % height][rand() %widht].groundboon;

31 *p = -1;32

for(int i=0;i1;i++)

3338 *p = -1;39

}4041}

4243

//輸出地圖

44void

sc()

4565 printf("\n"

);66

}

67 printf("

\n總共%d個地雷\n

",boon_num);68}

69//

大面積翻開周圍沒有雷的方塊

70void bigopen(int openh, int

openw)

7184

if (openh - 1 >= 0 && map[openh - 1][openw].isopen == false)85

90if (openh - 1 >= 0 && openw + 1

< widht && map[openh - 1][openw + 1].isopen == false)91

96if (openw - 1 >= 0 && map[openh][openw - 1].isopen == false)97

102if (openw + 1

< widht && map[openh][openw + 1].isopen == false

)103

108if (openh + 1

< height && openw - 1 >= 0 && map[openh + 1][openw - 1].isopen == false

)109

114if (openh + 1

< height && map[openh + 1][openw].isopen == false

)115

120if (openh + 1

< height && openw + 1

< widht && map[openh + 1][openw + 1].isopen == false

)121

126}

127//

查詢周圍地雷數量

128int ground(int openh, int

openw)

129152

//翻開指定方塊

153bool open(int openh,int

openw)

154164

//遊戲結束畫面

165void

end()

166173

//判斷是否勝利

174bool

win()

175182

void

main()

183199 printf("

請輸入要開啟的格仔列數:");

200 scanf_s("

%d", &openw);

201while (openw<0 || openw>height) //

如果輸入數字不正確則迴圈重新輸入

202206 isend=open(openh,openw);

207 iswin =win();

208 system("

cls"

);209

}210

end();

211if

(iswin)

212 printf("

恭喜你,掃雷成功!!!\n");

213else

214 printf("

可惜,掃雷失敗!\n");

215 printf("

輸入1重開遊戲,輸入其他任意數字退出遊戲:");

216 scanf_s("

%d",&isagain);

217if (isagain == 1

)218

222 }

執行結果

掃雷遊戲 C實現

相信掃雷遊戲對於這一代的我們來說並不陌生,小學中學階段在沒有網路的學校機房可沒少玩吧?以前,我們是以乙個使用者的角度來接觸它的,那麼,作為即將成為程式猿的我們來說,何不妨試試以開發者的角度來接觸它呢?先來分析一下掃雷程式的大體思路及框架 1 要實現掃雷程式,需要有乙個在每一局中固定的埋雷陣列,表示雷...

C實現掃雷小遊戲

直接上傳 這是乙個 game.h 標頭檔案 ifndef game h define game h include include define row 9 define col 9 define count 10 define rows 11 define cols 11 void initboa...

c 實現掃雷遊戲 初學

全域性變數定義地圖和一些判斷資訊 建立三個地圖 分別表示 源地圖 顯示的效果地圖 和乙個用來判斷點位是否被選中的地圖 玩家輸入要翻開的格仔的行數和列數。用乙個函式來翻開目標格仔,如果是地雷遊戲失敗,可以選擇是否重新遊戲並且重新整理乙個新的隨機地圖,否則用乙個函式統計目標格仔周圍的地雷數。如果周圍沒有...