掃雷規則:
自定義大小的方塊矩陣中隨機布置一定量的雷。由玩家逐個翻開方塊,以找出所有地雷為最終遊戲目標。如果玩家翻開的方塊有地雷,則遊戲結束;如果翻開的方塊裡沒雷,則顯示以這個方塊為中心的九宮格裡一共有多少雷。
思路:
假如我們要供使用者玩的棋盤大小是10x10,為了顯示邊界欄上的雷數,我們要設定乙個12x12大小的棋盤,這樣在統計周圍雷的數目時方法也是一樣的(具體見**中 getmine()子函式)。另外,我們不光要設定乙個展示給使用者的棋盤,還要設定乙個大小一樣的使用者看不見的棋盤用來種隨機數種子(設定雷的分布),注意種的隨機數種子是在棋盤二的內部10x10裡分布的,邊界處均設定成無雷。字元『1』代表有雷,字元『0』代表無雷。
難點一:
如何統計雷的數目?這裡我們均使用的是char型的,假設被翻開的放塊周圍有6個『1』,2個『0』,那麼我們寫返回值時可以寫成6x『1』+2x『0』-7『0』,這樣返回的就是字元型『6』而非數字型6。6x(『0』+1)+2x『0』-7x『0』=6x』0』+6x1+2x』0』-7x『0』=『0』+6=52,這樣返回的char就是『6』了。
難點二:
為什麼都要用char型而不用int型,是因為初始化的時候board[row][col]和mine[row][col]使用的都是乙個介面,為了方便初始化所以就都用char型了,再加上int佔4個位元組,而char只佔乙個位元組。
難點三:
棋盤的展示,詳見子函式showboard()。
**展示:
標頭檔案mine.h
#ifndef _mine_h
#define _mine_h
#include
#include
#include
#include
#pragma warning (disable:4996)
#define row 12
//行數
#define col 12
//列數
#define mine 20
//雷數
void
game()
;void
initboard
(char board[
][col]
,int row,
int col,
char elem)
;void
showboard
(char board[
][col]
,int row,
int col)
;void
setmine
(char mine[
][col]
,int row,
int col)
;char
getmine
(char mine[
][col]
,int x,
int y)
;#endif
主檔案部分main.c
#include
"mine.h"
void
menu()
intmain()
}system
("pause");
return0;
}
mine.c
#include
"mine.h"
void
initboard
(char board[
][col]
,int row,
int col,
char elem)}}
void
showboard
(char board[
][col]
,int row,
int col)
printf
("\n");
for(i =
1; i <= col -
2; i++
)printf
("---\n");
for(i =
1; i <= row -
2; i++
)printf
("\n");
for(j =
1; j <= col -
2; j++
)printf
("---\n");
}}void
setmine
(char mine[
][col]
,int row,
int col)
mine[x]
[y]=
'1';
n--;}
}char
getmine
(char mine[
][col]
,int x,
int y)
void
game()
else
if(board[x]
[y]!=
'*')
else
if(mine[x]
[y]==
'0')
else
}char
*result =
null;if
(count >0)
else
printf
("####################################\n");
printf
("%s"
, result)
;printf
("####################################\n");
showboard
(mine, row, col)
;}
C語言實現掃雷遊戲
game.h define crt secure no warnings 1 include include include include define sum 10 define row 11 define col 11 void print void init char mine row co...
C語言實現掃雷遊戲
今天我們來用c語言實現另乙個眾所周知的小遊戲 掃雷 首先,與五子棋不同的是,為了不讓雷被玩家直接看到,我們需要建立兩個棋盤。乙個用於儲存雷,我們將其命名為mine盤,乙個能直觀的展現給玩家,我們將其命名為show盤 其次,為了算清玩家選擇的座標周圍有多少雷,我們無可避免的要訪問mine盤對應座標周圍...
掃雷遊戲 C語言實現
1.使用兩個二維陣列表示地圖 a show map char 表示翻開 數字 和未翻開 的狀態 b mine map char 表示地雷 1 和不是地雷 0 的狀態 2.對陣列進行初始化 3.列印地圖 show map 4.提示玩家輸入乙個座標表示要翻開乙個位置 5.判定是否踩雷 6.如果未踩雷,判...