1.使用兩個二維陣列表示地圖
a)show_map(char):表示翻開(數字)和未翻開(*)的狀態
b)mine_map(char):表示地雷(『1』)和不是地雷(『0』)的狀態
2.對陣列進行初始化
3.列印地圖(show_map)
4.提示玩家輸入乙個座標表示要翻開乙個位置
5.判定是否踩雷
6.如果未踩雷,判定所選座標周圍有幾個雷
下面是原始碼:
#define _crt_secure_no_warnings
#include#include#include#include#define max_row 9
#define max_col 9
#define mine_count 10
int menu()
void init(char show_map[max_row][max_col],char mine_map[max_row][max_col])
} for (int row = 0; row < max_col; row++)
} int mine_count = mine_count;
for (; mine_count>0; mine_count--)
mine_map[row][col] = '1'; }}
void print(char map[max_row][max_col])
printf("\n");
printf(" ");
for (int row = 0; row < max_row; row++)
printf("\n");
for (int row = 0; row < max_row; row++)
printf("\n"); }}
updateshowmap(int row,int col,char mine_map[max_row][max_col],char show_map[max_row][max_col] )
if (row - 1 >= 0 && mine_map[row-1][col] == '1')
if (row - 1 >= 0 && col+1<=max_col && mine_map[row-1][col+1] == '1')
if (col - 1 >=0 && mine_map[row][col-1] == '1')
if (col + 1 <=max_col && mine_map[row][col+1] == '1')
if (row + 1 <= max_row && col - 1 >= 0 && mine_map[row+1][col-1] == '1')
if (row + 1 <= max_row && mine_map[row+1][col] == '1')
if (row + 1 <= max_row && col + 1 <= max_col && mine_map[row+1][col+1] == '1')
show_map[row][col] = count+'0';
}void game()
if (show_map[row][col] != '*')
if (mine_map[row][col] == '1')
++open_count;
if (open_count == max_row*max_col - mine_count)
updateshowmap(row,col,mine_map,show_map); //判斷被翻開格仔的周圍有幾個雷 }}
int main()
else if(choose==0)
else
system("pause");
return 0;
}
遊戲執行如下(這裡座標只翻開了幾個,可以自己執行)
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語言實現掃雷遊戲
思路 使用兩個二維陣列分別存放布置好的雷和排查出來的雷 初始化棋盤並展示棋盤 開始不展示雷的位置 隨機找座標布置雷 輸入座標排查雷 若輸入的座標是雷,則被炸死 若輸入的座標不是雷,則統計周圍有幾個雷 test.c define crt secure no warnings 1 include gam...