首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 软件时空 > 软件相关 > 扫雷程序思想讲解(转载)
【标  题】:扫雷程序思想讲解(转载)
【关键字】:
【来  源】:http://www.cublog.cn/u/12592/showart.php?id=147869

扫雷程序思想讲解(转载)

 扫雷程序思想讲解
    在我大二的时候就编写了一个扫雷程序,现在也有很多
源程序下载,我不知道他们的算法是怎么样的,但我想我的
算法应是最清晰和简单的。下面就来讲解我的扫雷程序思想。
    首先我们在雷区上随机地放上雷,没有雷的地方被点击
后就会显示一个数字表示它周围有几个雷,这是怎么实现的
呢?我们可以把整个雷区看成一个二维数组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[34]周围有几个雷,就只有去检测
 a[23],a[24],a[25]
 a[33],       a[35]
 a[43],a[44],a[45]
这8个雷区是否放上了雷,仔细观察它们成在数学关系。
抽象出来就是:a[i,j]的雷的个数就是由
 a[i-1,j-1],a[i-1,j],a[i-1,j+1]
 a[ i ,j-1],           a[ i ,j+1]
 a[i+1,j-1],a[i+1,j],a[i+1,j+1] 
(如果超出边界再加以判断)
这样的8个雷区决定的。

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

30秒清除你电脑中的垃圾:【上一篇】
一道关于穷举的推理题:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • DocX的背景介绍
  • 我喜欢简单:ant - java 构建工具
  • 开发J2EE应用应遵循的几点原则
  • [topCoder-每日一二题]--[3]
  • Ghost提速的前期准备
  • 第四章 C#类型
  • 传奇世界 家族练级全攻略
  • Product:《SysClock(系统关机精灵)》
  • 整合Oracle 10g、Apache 2.0、Php 5
  • SQL Server XML 和 Web 应用体系结构
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.