主要思想是構建兩個二維陣列,但是構建出來的二維陣列要比列印出來的大一圈,因為這樣才會在後續統計雷數的時候更加方便。
然後兩個二維陣列,其中乙個二維陣列是我用來布置雷的,而另乙個是展示給玩家看的。
在我的棋盤布置雷之後,讓玩家在他的雷盤進行選擇。
如果選擇的座標在我的棋盤是雷,則炸。
如果不是雷,則統計周圍的雷數
1.統計周圍雷數,如果周圍一顆雷都沒有,則展開繼續統計。
2.如果周圍有雷,則顯示周圍的雷數。
3.玩家進行一步一步的掃雷過程中,如果遇到雷,那邊炸掉,重新遊戲
如果沒遇到雷,最後統計玩家沒掀開的格仔數量,如果數量是等於雷的數量,那遊戲玩家獲勝。
以上就是大體 的思路,下面是**展示:
標頭檔案game.h
#include
#include
#include
#include
#define row 9
#define col 9
#define rows row +2
#define cols col +2
#define mine 9
void
initboard
(char board[rows]
[cols]
,int row,
int col,
char set)
;void
display
(char board[rows]
[cols]
,int row,
int col)
;void
putmine
(char board[rows]
[cols]
,int row,
int col)
;void
saolei
(char mineboard[rows]
[cols]
,int showboard[rows]
[cols]
,int rol,
int col)
;int
nearmine
(char mine[cols]
[rows]
,int x,
int y)
;void
nomine
(char mine[rows]
[cols]
,char show[rows]
[cols]
,int x,
int y)
;int
countblank
(char show[rows]
[cols]
,int row,
int col)
;
初始化
void
initboard
(char mineboard[rows]
[cols]
,int row,
int col,
char set)
//初始化棋盤
}}
列印棋盤
void
display
(char board[rows]
[cols]
,int row,
int col)
//列印棋盤
printf
("\n");
for(i =
1; i <= row; i++)}
printf
("\n");
printf
(" ");
for(j =
1; j <= col; j++)}
}printf
("\n");}}}
放隨機雷
void
putmine
(char board[rows]
[cols]
,int row,
int col)
//布置雷
}}
統計周圍雷個數
int
nearmine
(char mine[cols]
[rows]
,int x,
int y)
用遞迴,實現展開
void
nomine
(char mine[rows]
[cols]
,char show[rows]
[cols]
,int x,
int y)
else
}
統計玩家沒掀開的格仔個數
int
countblank
(char show[rows]
[cols]
,int row,
int col)
}return count;
}
玩家掃雷
void
saolei
(char mine[rows]
[cols]
,char show[rows]
[cols]
,int row,
int col)}if
(mine[x]
[y]==
'1'&& show[x]
[y]==
'*')
}else}}
while
(flag)
;}
改裝公升級:第一次碰雷不炸開:設定count,每次輸入座標count便加1,在count=1時碰雷遊戲繼續,**如下
void
saolei
(char mine[rows]
[cols]
,char show[rows]
[cols]
,int row,
int col)}if
(mine[x]
[y]==
'1'&& show[x]
[y]==
'*'&& count ==1)
if(mine[x]
[y]==
'1'&& show[x]
[y]==
'*'&& count !=1)
}else}}
while
(flag)
;}
主函式text.c
#define _crt_secure_no_warnings
#include
"game.h"
void
menu()
void
game()
;char showboard[rows]
[cols]=;
initboard
(mineboard, rows,cols,
'0')
;putmine
(mineboard, row, col)
;display
(mineboard, row, col)
;initboard
(showboard, rows, cols,
'*')
;display
(showboard, row,col)
;saolei
(mineboard, showboard, row, col);}
intmain()
}while
(input)
;return0;
}
實現
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...