全球旧事资料 分类
个方向)的地雷数,如果周围地雷数为0,调用递归函数ShowWhite处理周围格子的情况,显示周围地雷数或空白。如果单击的格子周围地雷数不为0,则显示周围地雷数,将处理过的格子作标记。如果所有格子处理完毕,游戏胜利,显示胜利信息。2如果单击了鼠标右键该格子没有红旗则显示红旗。如果有红旗,再击右键,则红旗消失。3重复步骤2直到按键结束程序。8Mi
eStatistics统计地雷统计每个格子周围的雷数,分别考虑格子处于四个角、四条边以及中间某个位置的情况。周围指上、下、左、右、左上、左下、右上、右下。注意程序中使用的是多个if语句,而没有使用或运算连接组成复合表达式,例如:
fifMi
e01
um1
NUMifMi
e10
um1
NUM没有写成ifMi
e01
um1Mi
e10
um1是考虑到C语言的逻辑表达式的短路问题,逻辑或只要前面的表达式为真,后面就不必判断了,这样可能造成少计地雷数。9ShowWhite显示无雷区的空白格当单击了某个格子,该格子周围地雷数为0时,应该继续判断它周围8个方向的格子的周围地雷数是否为0,将这些格子都用空白显示。所以这也是一个递归问题,将其构造为递归函数。一个递归函数有两个要素,一个是入口参数,且是降规模的,另一个为出口参数。本函数的入口参数为格子的坐标,表示处理哪个格子,出口参数是该格子有红旗或者已经显示过数字或空白格子。具体算法如下:(1)如果当前格子有红旗或者已经显示过数字或空白格子,则返回。(2)空白格子数减1统计处理过多少格子。(3)如果周围的地雷数为0,且它不是地雷,则将它显示为空白,同时将它的状态值
um置0,表示处理过;如果周围的地雷数不为0,显示周围地雷数,同时将它的状态值
um置0,表示处理过(即显示过数字),返回。(4)8个方向递归调用函数显示所有的空白格子。10GameOver游戏失败如果单击了地雷,则地雷爆炸,游戏结束,显示所有的地雷,两重循环判断每个格子的状态,如果状态值为1,则为地雷,设置红色背景,实体填充模式,画圆表示地雷。
f11GameWi
输出最后的胜利者结果如果所有格子都处理过了,就表示胜利,输出youwi
信息。12鼠标处理函数在Wi
dows应用程序中,人们越来越离不开的输入设备是鼠标,用户拿着鼠标指指点点就完成了几乎全部的工作,利用VisualBasic、VisualC等开发工具开发Wi
dows应用程序,系统提供了鼠标支持功能,无须程序员在这方面下功夫。然而在DOS环境下,用户要使用鼠标必须自己加载鼠标驱动程序。在Wi
dows操作系统下r
好听全球资料 返回顶部