网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  用java编写扫雷游戏--算法思考     
  文章作者:未知  文章来源:水木森林  
  查看:79次  录入:管理员--2007-11-17  
 
  ?? 作者: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?c 1 ][ j ?c 1 ]????????? a[?i ?c 1 ] [ j ]? ??????????? a[ i ?c 1 ][ j + 1 ]

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



?
 
 
上一篇: 用java编写的密码算法类    下一篇: 用java生成文本文件(收集)
  相关文档
eclipse插件编程之implementors 11-16
在java web应用中如何实现任务有效调度 11-16
带你揭开java clone技术的神秘面纱 11-17
改头换面之:j2ee 更名为 java ee 11-17
java 2 micro edition简介(一) 11-17
java基础:javascript cookie管理(程序) 11-16
java初学者容易混淆的几个问题详细解析 11-16
rcp中product文件的用法 11-17
robocode的线程与执行次序 11-17
用java将文件名从中文转为拼音 11-16
绕过java开发瓶颈 解析ejb编程限制二 11-17
j2ee开发n层应用 11-17
详解xml与j2ee组合技术的精髓(1) 11-16
介绍三个集合容器库 11-17
java语--hibernate中各个包的作用简介 01-29
java替代c语言的可能性 11-17
老康:java开源项目hibernate快速入门 11-17
基于spring的应用增加简单规则引擎 11-17
java applet程序设计基础 11-16
在eclipse3.0.x配置基于struts的web开发环境 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息