|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
?? 作者: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实现DB2的自定义函数 下一教程: Java入门需把握的30个基本概念 您可以阅读与"用Java编写扫雷游戏--算法思索"相关的教程: · 用Java编写扫雷游戏--代码思想 · 用Java编写的密码算法类 · JAVA 的MD5加密算法源代码 · 编写跨平台Java程序注重事项 · Java API之算法 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |