地雷演算法
根據規則,應該有個 「打開沒有空白方格時遞歸打開周圍空白或數字方格」 的方法;
還要有個 「點擊數字方格時,判斷周圍8個方格標記地雷數量與數字是否相同,相同打開未標記地雷的方塊」 的方法。
方格類的思路應該是
class fangGe{
//標記是數字空白還是地雷
int type;
void daKai (){
//判斷是否已經打開
//判斷類型
//如果是空白 循環周圍8個方格 調用其打開方法
//如果是數字,打開自己
//如果是地雷GameOver
}
}
只寫了問題相關的,希望對你有幫助。
㈡ 掃雷公式及詳解是什麼
掃雷公式是一夾二,一有雷。二夾一,心有雷。二夾三,全有雷。 二二邊,都有雷。三連一,中有雷。四連一,邊有雷。
詳解:
數字表示周圍臨近8個格子雷的數量,如此數字為2,則周圍8個格子一共會有2個雷。
基礎確定雷:基於上規則,若周圍空地=數字,則空地均為【基礎確定雷】。
等效:數字減去周圍雷數為【等效數字】,如此3確定周圍存有1雷,則等效為2。
等效在後續公式套用中會起到很關鍵的作用,基本來說,就是將一些不符合公式的情況,變為符合公式的情況。
一二一,邊有雷:出現121列時,且2僅有一側空地(3格),則如圖,2的斜側均為確定雷(並且2正側方確定無雷)。由於「2122」的2周圍有一個確定雷,則變化為「2121」形式,套用上公式。
二連一,邊有雷:出現「a21b」時,a正側為確定雷(並且b正側確定無雷)。
一種等效變換的二連一:此情況中「314旗」,由於4側有2雷,則4等效為2,變換為「312x」,套用上公式。
1221,二側雷:出現「1221」時,2上確定雷。
二夾一,心有雷:在「x212x」時,1正側方確定雷(並且1斜側方確定無雷)。
如此情況,盡管無法確定雷的位置,但是可確定上方三格無雷。原理是由於雷一定出現在第二行,因此第二行的1已經被第二行滿足,則上方無雷。而再推進一格,此時第2行的1被第三行滿足,則1行2行均無雷 。
㈢ C語言如何編程實現掃雷使用WIN-TC或Microsoft Visual C++
我以前寫過 很簡單。
定義一個2維的數組,然後用rand() 隨機佈雷,然後計算沒有雷的上面的數字。 有雷的定義為-1,沒有雷的上面可能是0~8。
演算法很簡單,剩下的就是繪制界面了。總體不難,為何不自己試試?