java

位置:IT落伍者 >> java >> 浏览文章

Java扫雷算法


发布日期:2021年02月16日
 
Java扫雷算法

建立一个雷区可以用一个一个的JButton按钮放在棋盘状的一个JFrame里或者JDialog里当然JButton太难看了可以的话可以监听鼠标盘子上可以放上自己制作的几张小图片

我们在雷区上随机地放上雷可以用二维数组用MathRandom()随即生成下标两个在相应的数组里布上雷

注册监听

点击以后按下列的方式遍历数组

没有雷且被点击后就会慢慢的波及到类区如

@ @ @ @ @ @ @ @ @ @

@ @ @ & @ @ @ @ @ @

@ @ @ @ @ @ $ @ @ @

@ $ @ @ @ @ @ @ @ @

假设点击了[]位置应该变成

@ @ @ @ ~ ~ ~ ~ ~

@ @ @ & ~ ~

@ @ @ @ @ @ $ ~ ~

@ $ @ @ @ @ @ ~ ~

在这里我把上图解释一下

】 【】 【

】 【】 【

点击了【】位置以后由于以为基点向四周扩散一直到雷区的边沿!由于都没有雷哪么就又以这个几点向它们的四周扩散!以其中的任何一个为中心八个方向如果有雷的话就在这个地方标出它周围的雷数来提醒玩家!

如到了位置

@() @() @()

$() @() @()

只有其 西南位置有一个雷哪么【】位置标注以其为中心 其北西东北东南西北西南方向一共有个雷

】的八个方位只有其南方有一个雷哪么第一次扩展到此位置的下一个不能再展了!总而言之

@ @ @

@ 【】@

@ @ @

以【】为中心找其周围的雷数简化一下就是不断的画正方形!可要小心哦!不要把数字标在地雷上了只是雷区的边沿特别注意边沿二字就是提醒玩家你现在处的位置朝八个方向走下一步有几个地雷在等着你去踏!

下面是网上的一个例子 以上是我的理解罢了!希望对你有帮助!

如雷区

我要知道a[]周围有几个雷就只有去检测

a[]a[]a[]

a[] a[]

a[]a[]a[]

个雷区是否放上了雷仔细观察它们成在数学关系

抽象出来就是a[ij]的雷的个数就是由

a[ij]a[ij]a[ij+]

a[ i j] a[ i j+]

a[i+j]a[i+j]a[i+j+]

(如果超出边界再加以判断)

这样的个雷区决定的

扫雷程序还会自动展开已确定没有雷的雷区如果a[]周围雷数为a[]已被标示为地雷那么a[]a[]a[]a[]a[]a[]a[]将被展开一直波及到不可确定的雷区这也是实现的关键我们可以把数组的元素设定为一个类对象它们所属的类设定这样的一个事件在被展开时检查周围的雷数是否与周围标示出来的雷数相等如果相等则展开周围未标示的雷区这样新的雷区展开又触发这个事件就这样递归下去一直蔓延到不可展开的雷区

相信在了解以上两个要点后把雷区这个类编写完全(如添加是否有雷标记是否展开标记周围雷数等双击左右单击的鼠标事件等)实现扫雷程序应是十分单的一件事

               

上一篇:用Java实现IRC文本到语音转换

下一篇:java RSA 加解密