掃雷的分析與實現 C語言

2021-09-27 04:49:24 字數 3560 閱讀 8866

主要功能有

1.第一次下子不被炸死;

2.下子後顯示周圍布雷數;

首先可以將掃雷的遊戲介面看做乙個二維陣列;然後有限的雷隨機排布在這個二維陣列中,玩家通過輸入座標來確定該座標對應的二維陣列座標是否是雷,若不是則顯示周圍布雷數,這時考慮座標如果在陣列的中間則少顯示周圍8個座標布雷情況,而在陣列邊緣則小於8。因此我在建立陣列時建立乙個比所需數大2行2列。將所需陣列視為中間陣列即可;如圖:

建立test.c,game.c和game.h三個檔案

**如下:

int main()

} while (input);

system("pause");

return 0;

}

**如下;

void muen()

void init_mine()//初始化兩個棋盤

}}void print_player()//列印玩家棋盤

}}int sweep_mine()//掃雷函式,踩到雷返回1,沒有踩到雷返回0

}else if (real_mine[x][y] == '1')//踩到雷

}else

return 0;//沒踩到雷

}

**如下:

void safe_mine()//避免第一次炸死

}break;//跳出此函式

}if (real_mine[x][y] == '0')

}else//座標錯誤}}

int count_mine(int x, int y)//檢測周圍8個區域雷的個數

void open_mine(int x, int y)//座標周圍展開函式

if (real_mine[x - 1][y] == '0')

if (real_mine[x - 1][y + 1] == '0')

if (real_mine[x][y - 1] == '0')

if (real_mine[x][y + 1] == '0')

if (real_mine[x + 1][y - 1] == '0')

if (real_mine[x + 1][y] == '0')

if (real_mine[x + 1][y + 1] == '0')

}

**如下;

int count_show_mine()//判斷剩餘未知區域的個數,個數為雷數時玩家贏}}

return count;

}

檢視第一是否可以炸死(根據布雷圖,輸入有雷座標未被炸死):

第二步輸入有雷座標:

判斷玩家贏;

while (1)//迴圈掃雷

if (ret)//判斷是否踩到雷

print_player();//列印玩家棋盤

}}int main()

} while (input);//迴圈玩遊戲

system("pause");

return 0;

}

#define _crt_secure_no_warnings 1

#define _crt_secure_no_warnings 1

#include"game.h"

char show_mine[row][col] = ;

char real_mine[row][col] = ;

void muen()

void init_mine()//初始化兩個棋盤

}}void print_player()//列印玩家棋盤

}else if (real_mine[x][y] == '1')//踩到雷

}else

return 0;//沒踩到雷

}void safe_mine()//避免第一次炸死

}break;//跳出此函式

}if (real_mine[x][y] == '0')

}else//座標錯誤

}}int count_mine(int x, int y)//檢測周圍8個區域雷的個數

void open_mine(int x, int y)//座標周圍展開函式

if (real_mine[x - 1][y] == '0')

if (real_mine[x - 1][y + 1] == '0')

if (real_mine[x][y - 1] == '0')

if (real_mine[x][y + 1] == '0')

if (real_mine[x + 1][y - 1] == '0')

if (real_mine[x + 1][y] == '0')

if (real_mine[x + 1][y + 1] == '0')

}int count_show_mine()//判斷剩餘未知區域的個數,個數為雷數時玩家贏}}

return count;

}

#include#include#include#include#define row 12

#define col 12

#define count 10//棋盤中雷的總數

extern char real_mine[row][col];//布雷陣列

void muen(); //選單函式

void init_mine(); //初始化陣列函式

void print_player(); //列印玩家棋盤

void print_mine(); //列印設計者棋盤

void set_mine(); //布雷函式

int count_mine(); //統計周圍雷的個數

void safe_mine(); //避免第一次被雷炸死的函式

int sweep_mine(); //掃雷函式

void open_mine(int x, int y);//展開函式

int count_show_mine(); //判斷玩家棋盤剩餘未知區域的個數

掃雷遊戲的實現 C語言

掃雷遊戲 define crt secure no warnings define max row 9 define max col 9 define max mine count 10 include include include intmenu printf n你的輸入有誤 請重新輸入 n c...

C語言實現掃雷

思路,建立兩個二維陣列,乙個作為雷區,乙個作為顯示區,雷區只在程式結束時顯示。每次使用者操作後重新整理顯示區的陣列成員。建立雷區二維陣列12 12,顯示區二維陣列10 10,用 0 代表安全區,1 代表雷區。雷區的陣列長度設定比顯示區的陣列長度多2,方便邊框區域計算周圍地雷數量。標頭檔案宣告 inc...

C語言實現掃雷

首先來講一講掃雷的規則 隨便點乙個格仔,會有一塊,上面的數字就代表數字周圍八個格仔會有幾個雷,是1他周圍就只有1個雷,2就有兩個雷 寫 的時候要注意構思 的框架,每個函式實現的意義在 中都有體現,首先看一下頭檔案game.h define row 9 define col 9 include inc...