地雷算法
根据规则,应该有个 “打开没有空白方格时递归打开周围空白或数字方格” 的方法;
还要有个 “点击数字方格时,判断周围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。
算法很简单,剩下的就是绘制界面了。总体不难,为何不自己试试?