网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.在NetBeans IDE 4.1中.
.J2ME网络应用程序在几款机器下性.
.JDBC解决方案.
.JAVA基础:深入浅出Java的访问者.
.开发技术:KETTLE JAVA API 开发.
.Java 数据对象(JDO)介绍(四).
.web应用分页技术.
.实战Visual Basic.Net对话框.
.JHighlight 1.0 发布.
.了解Java,便了解了微软.NET.
.The Three Faces of SOA.
.Java 命 名 人 谈 Java.
.Java命名人谈Java.
.使用Javap获得不止于文档的东西.
.提高 Java 代码的性能.
.java编译环境的构建.
.WindowsXP下JDK的配置.
.了解Hibernate的FlushMode.NEVER.
.java基础 java中模式和框架的介绍.
.给大家推荐几个方便java编辑的软.

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

发表日期:2008-1-5



  ?? 作者: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 ]

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]四周雷数为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直接连接数据源的方法 人气:673
下一篇:用Java编写的密码算法类 人气:1142
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐