建立標頭檔案和相應的.c檔案
其中,game.h用於寫入所有要包含的標頭檔案,要宣告的巨集常量及要使用的函式宣告。
#include
#include
#include
#define row 9
#define col 9
#define rows row+2
#define cols col+2
//初始化
void
initboard
(char board[rows]
[cols]
,int row,
int col)
;//列印
void
displayboard
(char board[rows]
[cols]
,int row,
int col)
;//布置雷
void
setmine
(char board[rows]
[cols]
,int row,
int col)
;//掃雷
void
findmine
(char mine[rows]
[rows]
,char show[rows]
[cols]
,int row,
int col)
;//統計
intgetminecount
(char mine[rows]
[cols]
,int x,
int y)
;
思路:當排查到9 * 9邊緣的行或列中的某個座標時,會出現越界的情況,所有我們給9* 9加上一行和一列之後,假定乙個11*11的**,用二維陣列show[rows][cols]接收,存放排查出來的雷。然後9 * 9的**用mine[row][col]接收,存放布置好的雷。
test.c裡的main函式
int
main()
}while
(input)
;}
選單列印
void
menu()
遊戲的實現game():
void
game()
;//存放布置好的雷 初始化'0'
char show[rows]
[cols]=;
//存放排查出來的雷的資訊 初始化'*'
initboard
(mine,rows,cols,
'0')
;initboard
(show, rows, cols,
'*')
;displayboard
(show, row, col)
;//布置好的雷的資訊不應該輕易列印
//1布置雷
setmine
(mine,row,col)
;//2掃雷
findmine
(mine, show,row, col)
;}
game函式中真正作用的函式在game.c檔案中實現(一)初始化
void
initboard
(char board[rows]
[cols]
,int rows,
int cols,
char ch)
}}
思路:11*11的**存放排查後的雷的資訊,初始化成『 * 』,9 * 9的**存放布置好的雷,初始化成字元0。依次傳參進行初始化。
(二)列印
void
displayboard
(char board[rows]
[cols]
,int row,
int col)
printf
("\n");
for(i =
1; i <=row; i++
)printf
("\n");
}}
(三)布置雷
void
setmine
(char board[rows]
[cols]
,int row,
int col)
}}
將雷隨機布置,設定為字元1
0(四)掃雷:兩個函式實現
1.排查
void
findmine
(char mine[rows]
[rows]
,char show[rows]
[cols]
,int row,
int col)
else
}else}if
(win == row*col -10)
}
2.統計不是雷的座標,周圍有幾個雷
int
getminecount
(char mine[rows]
[cols]
,int x,
int y)
思路:判斷以(x,y)座標為中心的八個座標的雷的數目。因為這個**裡面放的是字元,且『1』-『0』 = 1;所以可以利用這個計算出這八個座標中含雷的個數。
包含的知識點:二維陣列的初始化及使用,函式的使用,還有迴圈語句和一些判斷語句的使用。
思考和日後可以強化的地方:
1.遊戲的等級 easy - difficult
2.標記雷 - 取消標記雷
3.自動展開一片
C語言 掃雷
做乙個掃雷的遊戲,首先分析一下掃雷需要實現的功能 1.選擇乙個位置,如果該位置是雷則結束遊戲,並顯示所有雷的位置。如果不是雷則顯示該位置周圍雷的數量。2.如果周圍沒有雷,則該位置顯示空,並且周圍如果也為空則一併展開。3.第一次選擇時必定不是雷 4.當盤上剩餘的位置只有雷了,則遊戲也結束,並且玩家勝利...
C語言掃雷
大家想必都玩過掃雷,無論那個版本都有難度供已選擇,下面來分享乙個自己用c語言編寫的掃雷遊戲吧!編寫語言 c語言 編寫軟體 visual studio 2017 1.首先是將遊戲的測試模組寫好,要有提示玩家進入的選單函式以及選擇函式等各種需要編寫的函式想出乙個整體框架來 測試模組test。c incl...
掃雷(C語言)
1 第一次下子,不炸死。2 座標周圍沒雷,可以實現展開。標頭檔案 mine.h ifndef mine h define mine h include include include include define row 12 define col 12 define mine 20 void me...