#define _crt_secure_no_warnings
#include#include#include #define max_row 9
#define max_col 9
#define max_mine_count 10
//表示每個位置是不是雷,不能給玩家看
char mine_map[max_row][max_col];
//表示每個位置周圍有幾個雷,要給玩家看的
char show_map[max_row][max_col];
void init()
} //2.再對mine_map初始化,先把每個位置都填成'0'
// 產生若干個隨機位置,把隨機位置填成'1'
for (int row = 0; row < max_row; row++)
} srand((unsigned int)time(0));
int mine_count = 0;
while (1)
mine_map[row][col] = '1';
mine_count++;
if (mine_count >= max_mine_count) }}
//這個函式既能列印show_map也能列印mine_map
//不要用map c++中有這個函式
void printmap(char the_map[max_row][max_col])
printf("\n"); }}
void updatashowmap(char mine_map[max_row][max_col],
char show_map[max_row][max_col], int row, int col)
if (r < 0 || r >= max_row
|| c < 0 || c >= max_col)
if (mine_map[r][c] == '1')
} }//把count設到show_map中
show_map[row][col] = '0' + count;
}int main()
if (show_map[row][col] != '*')
//4.判斷是否踩雷
//第一次落子,不炸死
if (mine_map[row][col] == '1' && x == 0)
if (mine_map[row][col] == '1' && x > 0)
//5.判斷遊戲是否勝利(翻開所有的不是雷的格仔)
//使用count記錄已經翻開了多少個不是雷的格仔
++count;
if (count == max_row * max_col - max_mine_count)
++x;
//6.乙個根據這個位置的周圍雷的情況,更新show_map
updatashowmap(mine_map, show_map, row, col);
} system("pause");
return 0;
}
優化:
1.為方便使用者,應該在棋盤周邊加上座標
2.因生活中習慣理解座標從第一行第一列開始所以應該新增**進行座標轉換
C語言實現掃雷
思路,建立兩個二維陣列,乙個作為雷區,乙個作為顯示區,雷區只在程式結束時顯示。每次使用者操作後重新整理顯示區的陣列成員。建立雷區二維陣列12 12,顯示區二維陣列10 10,用 0 代表安全區,1 代表雷區。雷區的陣列長度設定比顯示區的陣列長度多2,方便邊框區域計算周圍地雷數量。標頭檔案宣告 inc...
C語言實現掃雷
首先來講一講掃雷的規則 隨便點乙個格仔,會有一塊,上面的數字就代表數字周圍八個格仔會有幾個雷,是1他周圍就只有1個雷,2就有兩個雷 寫 的時候要注意構思 的框架,每個函式實現的意義在 中都有體現,首先看一下頭檔案game.h define row 9 define col 9 include inc...
c語言實現掃雷
void menu 樸實無華的選單 因為我們這裡要有乙個陣列來存放雷,乙個陣列給玩家看,所以在這裡我們用兩個陣列,給我們設定雷的我們暫且稱為my board,給玩家看的稱為y board,如下 示例 char ret 0 在這裡建立兩個陣列自己看的叫my board,將要放置雷的地方置為1,其他地方...