案例教学(一)
实现一个具有Windows系统扫雷游戏主要功能的扫雷程序。
开局 胜利 失败
程序分析(1)
  通过亲身体验或其他交流手段,可获知这个游戏是在屏幕显示的一个雷区范围内(如下图所示),系统预先埋设了一定数目的地雷(图中的笑脸左侧小窗显示的数字),游戏者在游戏过程中通过判断,若能正确标记出雷区中的所有地雷,则游戏胜利(如下图所示);否则踩雷,游戏失败。具体规则如下:
(1)在“游戏”菜单上,单击“开局”,出现的游戏界面中包括地雷计数器窗口、计时器窗口和雷区。开局后,单击雷区中的任何一个方块,便启动计时器。每标记一个地雷,地雷计数器减1;
(2)用鼠标左键单击某个方块,可挖开它。若所揭方块下有雷,则踩雷,此时所有含地雷的块都标记 * ,这局游戏失败;如果方块上出现数字,它代表在它周围的八个方块中共有多少颗地雷;
(3)用鼠标右键单击某个方块,则标记此块下埋着地雷(实际上可能是误标),显示为。每标记一个地雷,地雷计数器减1;
(4)用鼠标右键击打某个方块两次,则在某块上面标一个问号(?),意味着没有把握判定它是否有雷。标记为“?”的块可在恰当的时候再击打鼠标右键两次或单击左键,将其标记为地雷或挖开;
(5)如果某个数字方块周围的地雷全都标记完,可以同时单击鼠标左右键,将其剩下的方块挖开。如果挨着这个方块的地雷没有全部标记完,则未挖开的方块将闪烁。
Windows 扫雷游戏图
开局 胜利 失败
程序分析(2)
  通过分析上述游戏规则,抛开Windows扫雷游戏中界面显示、鼠标操作等费本质的东西,我们从Windows扫雷游戏中提取的主要功能包括:
  规则(1)隐含初始化新游戏的开局功能;
  规则(2)隐含的挖雷功能;
  规则(3)对应的标记地雷功能;
  规则(4)对应的标记疑问功能;
  规则(5)的自动挖开功能。
  另外,我们还可以看到游戏的输入是启动这些功能的指示信息,通过鼠标左右键的操作老表达;游戏的输出是游戏是否成功。
  我们所要实现的扫雷游戏正是Windows扫雷游戏的模仿版,也就是说能够实现Windows扫雷游戏的主要功能,因此,我们的目标系统必须具备:开局功能、挖雷功能、标记地雷功能、标记疑问功能和自动挖开功能
总体设计
  扫雷游戏的输赢规则:挖开一个含有类的方块,游戏失败;正确的标记出所有含有雷的方块,游戏胜利。在1.2.2节我们已经分析出扫雷游戏的目标和主要的功能,即根据输入的信息,执行相应的诸如挖雷、标记雷、标记疑问、自动挖开等功能,以期在尽可能短的时间内标识出开局时所埋设的所有地雷。但是这仅仅是程序层次结构中最上层的部分(如下图所示)。划分的功能比较抽象,需要进一步的精化;系统实现的其他相关细节还是空白,需要进一步完善,从而逐渐逼近最后的实现。
扫雷系统的顶层层次图
  现阶段的设计任务是自顶向下逐步求精,具体要完成以下几点:
  ● 继续分析已有功能,精化出所有子功能,确定
  ● 模块间接口;
  ● 描述精化后每个模块的处理过程;
  ● 确定主要的数据及其数据结构;
  ● 确定输入输出数据的内外部形式;
  ● 界面的设计。
各功能模块设计
 (1)确定游戏的界面 (点击查看)
 (2)决定游戏的输入方式 (点击查看)
 (3)确定主要的数据,这里主要是有关雷区的数据 (点击查看)
 (4)功能求精 (点击查看)