扫雷程序思想讲解计算机等级考试

文章作者 100test 发表时间 2010:01:01 09:32:53
来源 100Test.Com百考试题网


  扫雷程序思想讲解
  在我大二的时候就编写了一个扫雷程序,现在也有很多源程序下载,我不知道他们的算法是怎么样的,但我想我的算法应是最清晰和简单的。下面就来讲解我的扫雷程序思想。
  首先我们在雷区上随机地放上雷,没有雷的地方被点击后就会显示一个数字表示它周围有几个雷,这是怎么实现的呢?我们可以把整个雷区看成一个二维数组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]周围有几个雷,就只有去检测百考试题-全国最大教育类网站(100test.com)
  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]将被展开,一直波及到不可确定的雷区。这也是实现的关键。我们可以把数组的元素设定为一个类对象,它们所属的类设定这样的一个事件:在被展开时,检查周围的雷数是否与周围标示出来的雷数相等,如果相等则展开周围未标示的雷区。这样新的雷区展开又触发这个事件,就这样递归下去,一直蔓延到不可展开的雷区。源:www.examda.com
  相信在了解以上两个要点后,把雷区这个类编写完全(如添加是否有雷标记,是否展开标记,周围雷数等,双击,左右单击的鼠标事件等),实现扫雷程序应是十分简单的一件事。

  编辑特别推荐:

  全国计算机等级考试资料下载

  全国计算机等级考试论坛

  如何应付二级考试中的公共基础知识

  全国计算机等级考试上机考试应试技巧

  百考试题教育全国计算机等级考试在线测试平台



相关文章


计算机二级DELPHI辅导:防止关闭windows计算机等级考试
详细教你如何使用delphi中thread的线程编程计算机等级考试
取得自从开机到现在CPU运行的周期数超毫秒级的精度计算机等级考试
取得某一dll所有输出函数名计算机等级考试
扫雷程序思想讲解计算机等级考试
delphi中的字符串处理以及几个字符串类型的说明计算机等级考试
一个从EXE、DLL文件中提取、存取图标完整程序计算机等级考试
计算机二级辅导:delphi读取ini文件计算机等级考试
一个新算法的表达式求值的函数计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛