用Java编写扫雷游戏--算法思考

原创 2004年09月13日 09:38:00

?? 作者:Aaron2004

??? 扫雷是一款相当经典的小游戏。他提供了非常友好的界面。

???下面就来讲解我的扫雷程序思想。首先我们在雷区上随机地放上雷,这可以用random类来实现。当没有雷的地方被点击后就会显示一个数字表示它周围有几个雷,这是怎么实现的呢?我们可以把整个雷区看成一个二维数组a[?i ][ j ],如雷区:

????????????? 11 ?12 ?13 ?14 ?15 ?16 ?17 ?18
???????????? ?21 ?22 ?23 ?24 ?25 ?26 ?27 ?28
??????????????31 ?32 ?33 ?34 ?35 ?36 ?37 ?38
????????????? 41 ?42 ?43 ?44 ?45 ?46 ?47 ?48
??????????????51 ?52 ?53 ?54 ?55 ?56 ?57 ?58
????
我们可以发现a[ I ][ j ]周围存在着如下关系:

?????????? a[i– 1 ][ j – 1 ]????????? a[?i – 1 ] [ j ]? ??????????? a[ I – 1 ][ j + 1 ]<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

a[????????????? a[ i ][ j – 1 ] ????????????? ?a[?i ][ j ]????????????????????a[ i ][ j + 1 ]

a[????????????? a[?i + 1 ][ j - 1]??????????a[?i + 1 ][ j ]? ???????????? a[ i + 1][ j + 1 ]

????????????于是 ,可以从a[ i ][ j ]的左上角顺时针开始检测。当然,如果超出边界,要用约束条件再加以判断!

???????????? 扫雷程序还会自动展开已确定没有雷的雷区。如果a[3][4]周围雷数为1a[2][3]已被标示为地雷,那么a[2][4]a[2][5],a[3][3]a[3][5],a[4][3]a[4][4]a[4][5]将被展开,一直波及到不可确定的雷区。这也是实现的关键。我们可以把数组的元素设定为一个类对象,它们所属的类设定这样的一个事件:在被展开时,检查周围的雷数是否与周围标示出来的雷数相等,如果相等则展开周围未标示的雷区。这样新的雷区展开又触发这个事件,就这样递归下去,一直蔓延到不可展开的雷区。相信在了解以上两个要点后,把雷区这个类编写完全(如添加是否有雷标记,是否展开标记,周围雷数等,双击,左右单击的鼠标事件等),实现扫雷程序应是十分简单的一件事。



?

java扫雷源码具有自动扫雷功能

  • 2010年09月20日 16:49
  • 43KB
  • 下载

java实现扫雷+AI自动扫雷策略及实现

最近打算入门一下java,写个小程序练下手,由于平时没事喜欢玩几把扫雷,就写个AI玩玩吧。。 java实现扫雷游戏网上代码比较多,这里不多说了,主要记录一下自己实现的一个自动扫雷策略。 根据扫雷的...
  • hmc0411
  • hmc0411
  • 2017年11月22日 21:31
  • 2892

java 实现扫雷算法

小时候接触扫雷,完了好久都没有弄明白,最近再次接触扫雷才明白了玩法。  规则:找出一定数量的雷整个游戏才会结束。点击方格,是数字n的话,就表明这个方格的周围8个方格中一共有n个雷。 算法:   ...
  • rudy45
  • rudy45
  • 2013年12月10日 22:13
  • 1156

java实现扫雷+AI自动扫雷策略及实现

最近打算入门一下java,写个小程序练下手,由于平时没事喜欢玩几把扫雷,就写个AI玩玩吧。。 java实现扫雷游戏网上代码比较多,这里不多说了,主要记录一下自己实现的一个自动扫雷策略。 根据扫雷的...
  • hmc0411
  • hmc0411
  • 2017年11月22日 21:31
  • 2892

java 实现简单扫雷

package com.test.swing; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; i...
  • qq397470071
  • qq397470071
  • 2013年12月29日 22:12
  • 2134

逆向-扫雷算法分析

最近思来想去,眼看着自己就要进某厂游戏安全团队实习了,也不能整天的无所事事,所以就寻思着先找点最简单的游戏用来练练手。想到之前逆向过一些小游戏,就把之前分析的扫雷整理了一下啊,写了个外挂,发了上来。...
  • Nightsay
  • Nightsay
  • 2015年05月06日 20:03
  • 2862

foj 1056 扫雷游戏【递归】

Problem 1056 扫雷游戏 Accept: 1978    Submit: 5012 Time Limit: 1000 mSec    Memory Limit : 32768 KB Pro...
  • nailnehc
  • nailnehc
  • 2015年11月08日 21:28
  • 797

扫雷(java版)

首先说一下扫雷规则。 1.数字是几就表示此数字位置邻接的八个方向有几个地雷 2.鼠标右键单击一次标记此位置为地雷(插上一个小旗),再单击一次标记为? 3.鼠标左键单击某位置   如果这个位置上的数字为...
  • su20145104009
  • su20145104009
  • 2016年08月08日 16:12
  • 9736

扫雷(java代码)

终于考完试了~回家的感觉真好~o(∩_∩)o ~   刚学了java,做课程设计时用java做了个最最简单的扫雷游戏,今天分享一下~ 代码中用到的图片文件请去如下链接免费下载: http://d...
  • u011433274
  • u011433274
  • 2014年01月15日 16:42
  • 3980

C#面向对象基于winform的扫雷游戏和简单的算法改进

由于实验室有一个演示系统的
  • long280310
  • long280310
  • 2014年05月08日 22:38
  • 1633
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Java编写扫雷游戏--算法思考
举报原因:
原因补充:

(最多只允许输入30个字)