c語言例項 9 掃雷

2021-09-29 18:03:07 字數 1638 閱讀 9225

#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,其他地方...