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



?

关闭计算机就这几招

 关闭计算机就这几招注:完全翻译整理自MSDN。非常简单. Vcbear.“系统ShutDown”属于Windows系统的一种基本服务。功能上有“关闭系统”,“注销用户”,“锁定工作站”3中操作。SD...
  • vcbear
  • vcbear
  • 2002-01-11 09:40:00
  • 1502

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

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

java 扫雷

我用java写了个扫雷,感觉有点飘飘然,让朋友玩了一下,发现了很多bug…… 修改之后,现将我的小作品呈上,功能简单,有喜欢玩扫雷的朋友可以玩一玩…… 发现需要学习的东西还有很多。。。。。。 ...
  • AndyDHU
  • AndyDHU
  • 2011-10-08 20:58:52
  • 480

扫雷-Java完整仿制

呵呵,前一阵子忙着考试,好长时间没上BLOG了。今天贴一个我自己做的扫雷程序,提高下人气,^_^因为刚写这个程序的时候没有想过会写的这么复杂,所以代码注释很少,抱歉。下面稍微说一下主要类的用途:Mai...
  • Nicholas_Lin
  • Nicholas_Lin
  • 2005-01-21 10:51:00
  • 3425

解答《编程之美》1.18问题1:给所有未标识方块标注有地雷概率

对于《编程之美》上没有提供答案和提示的1.18和4.11两节,本文将综合网络上已有的部分资料,深入挖掘解题思路,并对目前尚未找到满意答案的1.18节问题2给出算法解答。阅读本文需要了解古典概型(百度 ...
  • dyllove98
  • dyllove98
  • 2013-07-12 19:04:22
  • 2228

用java实现一个简易扫雷游戏

  • 2017年05月24日 17:46
  • 18KB
  • 下载

java实现扫雷游戏

java 扫雷 改进 右键标记雷
  • Limbos
  • Limbos
  • 2015-08-16 12:16:01
  • 5297

用Java编写扫雷游戏

扫雷不能不说一款非常经典的游戏,无聊时候可以打发时间,虽然玩了很久,但还不知道它是怎么写的,所以自己就尝试动手做了个。   众所周知,java的swing采用mvc模式,即模型-视图-控制器,所...
  • u010979097
  • u010979097
  • 2014-12-16 15:05:17
  • 563

用Java编写扫雷游戏--代码思想

import java.awt.*; import java.awt.event.*; import javax.swing.*;/*按扭类*/class Bomb extends JButton  ...
  • Aaron2004
  • Aaron2004
  • 2004-12-16 21:50:00
  • 2289

扫雷:我的Java之路--第一个小作品

这学期开始学Java,也许是为了工作,也许是对编程有了一点点兴趣,所以学的稍微有一点用心。而老师也只讲了一些基本的语法和操作,其他的都是自己一步步摸索来的,所以想写一点点东西来让以后的自己看看。废话不...
  • AmazingZ
  • AmazingZ
  • 2015-06-04 15:12:09
  • 7303
收藏助手
不良信息举报
您举报文章:用Java编写扫雷游戏--算法思考
举报原因:
原因补充:

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