C語言實現的掃雷遊戲

2021-10-07 11:43:34 字數 2981 閱讀 5863

掃雷規則:

自定義大小的方塊矩陣中隨機布置一定量的雷。由玩家逐個翻開方塊,以找出所有地雷為最終遊戲目標。如果玩家翻開的方塊有地雷,則遊戲結束;如果翻開的方塊裡沒雷,則顯示以這個方塊為中心的九宮格裡一共有多少雷。

思路:

假如我們要供使用者玩的棋盤大小是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.如果未踩雷,判...