请教扫雷算法
发布网友
发布时间:2022-04-26 21:38
我来回答
共5个回答
热心网友
时间:2023-11-06 03:50
扫雷的算法有两种,一种是老手使用的(凭经验操作),一种是新手使用的,我现在介绍一下老手使用的算法:
1.点第一个空
2.若点开的是一个格,则继续第1步
若点开的是一片(打开数大于等于9),则进行第3步
3.观察一片格的边角,
若有一个格数字与它周围的空格数相等,在空格处标雷并在两侧格子上同时左右键双击
若没有这种情况则观察有无[经验公式]
这样做直到不能再找到为止(一般能完成初、中级或高级的50%了)进行第4步
4.检查边角,重复第1步
—————
注:
[经验公式]:121组合,雷在2上
1221组合,两个雷在2上
还有好多复杂的,得自己总结
至于扫雷图形成的算法,是根据你点开的第一个格在哪里,总之第一个雷总不能在那里。在点开后万分之几秒里形成雷图,一切都是随机的,不过有一点对于初级来说有十几万分之一的几率打开3BV=1的图,也就是说一下就开了。(3BV的意思是赢得这盘扫雷所需要的最少左键点击数,比如一大片的3BV就是1,而一个没在一大片的边缘的格的3BV也是1,)也就是说,打开一大片所形成的那些边缘的格都不算,3BV是目前评价难易程度的最好方法,这也是随机,初级在1~71,中级大概25~180,高级100~250
热心网友
时间:2023-11-06 03:51
连用什么语言
都不说怎么回答啊。
只能简单的说说了:
你做个类继承按钮类,类里面有个int
ai
当ai=9的时候表示他本身就是雷,0-8表示他周围的雷数。
比如你想有10个雷,那就定义一个长度为10的你做的类的数组。然后都把他们的ai值设置为9,然后在随机分布在坐标点里。然后在根据他们的坐标点周围雷的数量来设置其他类的ai的值。
都设置好了之后
你就可以判断了
如果你点的按钮类的ai值不是9的话
就把他的数字显示出来,如何是0的话
就用编程的方式点击他周围8格的按钮
如果周围的按钮ai值还有0的话就再点,递归到没有0值的按钮为止。
只能简单的说这么多了,雷和类读音相同难免有错误的地方,你先理解理解理念吧。
我说一下什么叫编程的方式点击按钮,就是在一些高级语言中(java
c#)鼠标类中有个click函数。调用该方法就等于你用鼠标点击了按钮,当然语言不同
函数名不一样
参数名也不一样。自己根据不同情况进行参考。
热心网友
时间:2023-11-06 03:51
每个数字都表示这个格子周围8个相临格子中隐藏的地雷数.然后你就按照这个数字来点啊.因为不止一个数字.许多格子的数字必然有重叠的地方.然后你就可以开始推算是哪个有地雷哪个没有地雷了..我玩了四五年的扫雷了......哈哈 无聊吧
热心网友
时间:2023-11-06 03:52
打开扫雷,随便点开一个,然后再同时按下ctrl和鼠标左键,计时器就停住了.......
参考资料:http://tieba.baidu.com/f?kz=13560018
热心网友
时间:2023-11-06 03:53
例如:
***
*3*
***
*就是周围未翻开的格子
中间的3..说明在3周围的⒏个格子中..有3颗地雷.
又:
*****
*1*1*
**1**
就是说在1的周围⒏个格子中. 有⒈个地雷...其中有一个被排除..那么就是⒎个.
热心网友
时间:2023-11-06 03:50
扫雷的算法有两种,一种是老手使用的(凭经验操作),一种是新手使用的,我现在介绍一下老手使用的算法:
1.点第一个空
2.若点开的是一个格,则继续第1步
若点开的是一片(打开数大于等于9),则进行第3步
3.观察一片格的边角,
若有一个格数字与它周围的空格数相等,在空格处标雷并在两侧格子上同时左右键双击
若没有这种情况则观察有无[经验公式]
这样做直到不能再找到为止(一般能完成初、中级或高级的50%了)进行第4步
4.检查边角,重复第1步
—————
注:
[经验公式]:121组合,雷在2上
1221组合,两个雷在2上
还有好多复杂的,得自己总结
至于扫雷图形成的算法,是根据你点开的第一个格在哪里,总之第一个雷总不能在那里。在点开后万分之几秒里形成雷图,一切都是随机的,不过有一点对于初级来说有十几万分之一的几率打开3BV=1的图,也就是说一下就开了。(3BV的意思是赢得这盘扫雷所需要的最少左键点击数,比如一大片的3BV就是1,而一个没在一大片的边缘的格的3BV也是1,)也就是说,打开一大片所形成的那些边缘的格都不算,3BV是目前评价难易程度的最好方法,这也是随机,初级在1~71,中级大概25~180,高级100~250
热心网友
时间:2023-11-06 03:51
连用什么语言
都不说怎么回答啊。
只能简单的说说了:
你做个类继承按钮类,类里面有个int
ai
当ai=9的时候表示他本身就是雷,0-8表示他周围的雷数。
比如你想有10个雷,那就定义一个长度为10的你做的类的数组。然后都把他们的ai值设置为9,然后在随机分布在坐标点里。然后在根据他们的坐标点周围雷的数量来设置其他类的ai的值。
都设置好了之后
你就可以判断了
如果你点的按钮类的ai值不是9的话
就把他的数字显示出来,如何是0的话
就用编程的方式点击他周围8格的按钮
如果周围的按钮ai值还有0的话就再点,递归到没有0值的按钮为止。
只能简单的说这么多了,雷和类读音相同难免有错误的地方,你先理解理解理念吧。
我说一下什么叫编程的方式点击按钮,就是在一些高级语言中(java
c#)鼠标类中有个click函数。调用该方法就等于你用鼠标点击了按钮,当然语言不同
函数名不一样
参数名也不一样。自己根据不同情况进行参考。
热心网友
时间:2023-11-06 03:51
每个数字都表示这个格子周围8个相临格子中隐藏的地雷数.然后你就按照这个数字来点啊.因为不止一个数字.许多格子的数字必然有重叠的地方.然后你就可以开始推算是哪个有地雷哪个没有地雷了..我玩了四五年的扫雷了......哈哈 无聊吧
热心网友
时间:2023-11-06 03:52
打开扫雷,随便点开一个,然后再同时按下ctrl和鼠标左键,计时器就停住了.......
参考资料:http://tieba.baidu.com/f?kz=13560018
热心网友
时间:2023-11-06 03:53
例如:
***
*3*
***
*就是周围未翻开的格子
中间的3..说明在3周围的⒏个格子中..有3颗地雷.
又:
*****
*1*1*
**1**
就是说在1的周围⒏个格子中. 有⒈个地雷...其中有一个被排除..那么就是⒎个.