扫雷游戏制作过程(C#描述):第三节、雷区绘制

这一节我们主要涉及界面中雷区的绘制方法。

首先来考虑几个问题。为了保存整个雷区的信息,我们需要哪些数据。显然,除了要保存雷区的宽度和高度(分别定义为宽和高方向上方块的个数)外,还需要保存地雷的数目。这样我们需要用到三个变量nWidth, nHeight, nMineCnt分别保存雷区的宽度、雷区的高度以及地雷的数目。

右击窗口,选择查看代码,也可以使用快捷键F7,如下图所示:

3-1 查看代码

可以看到这样的代码界面:

3-2 代码界面

添加如下所示的代码,用来定义扫雷区域的基本变量,它们的含义在上文或者注释中都有提及:

为了方便设置这三个参数,我们可以定义一个新的函数SetGame,如下所示:


这样,我们就可以通过调用SetGame函数来设置游戏的参数了。为了方便阅读,我们可以为这个函数加上一个注释,在函数名上方输入”///“,程序会自动生成一个注释块,如下所示:

输入相关信息,第二行的内容是用来对函数的作用进行说明,下面的三行分别用来对三个参数的作用进行说明,将它们修改如下:

3-6 注释示例

这样当我们输入这个函数的时候(当然,我们目前还不需要调用这个函数。),就会显示出来对应的注释,如下图所示:

3-7 注释查看

到目前为止,我们的代码应该是这样的:

3-8 阶段性代码

接下来我们可以定义几个辅助函数,分别表示设置游戏参数为初级、中级、高级,如下图所示:3-9 游戏等级设置

在我们开始游戏的时候,我们希望它自动获取上次的游戏设置,如果这是第一次开始游戏,那么将游戏设置为初级。

我们先来看一下第一个需求,自动获取上次的游戏设置,这就意味着我们需要在上次游戏关闭的时候将上次的游戏设置保存下来。保存到哪里呢,我们在这里采用Setting文件来保存这些数据。工程创建的时候,系统会自动生成一个Setting文件。因此我们不需要自己创建,只需要使用原有的Setting文件即可。在右方解决方案资源管理器面板中展开Properties,右击Settings.settings,选择打开即可。

3-10 Setting文件

打开后的界面如图所示:

3-11 Setting界面

按照下图对它进行设置,设置完成后按Ctrl + S进行保存。

3-12 Setting设置

注意到第四栏,我们将它初始化为初级的参数,也就完成了我们刚才的第二个需求——无法找到上一次设置的时候,我们将它置为初级模式。

就行了,我们需要通过代码将这些参数读入到定义的变量中去,加入如下图所示的代码:

3-13 初始化游戏参数

有了这些参数我们就可以绘制雷区了,我们假定雷区为32×32的小方块,并且四周有一圈宽度为1的留白,用于与其它雷区区别,这样,每个雷区的实际大小为34×34。

接下去,我们将窗口切换到界面布局,选中主窗口,在左边的属性面板中,单击事件按钮,并找到Paint事件,双击该条目,系统会自动创建一个事件,我们将在这里绘制雷区。如下图所示:

3-14 Paint事件

添加Paint事件以后,程序会自动跳到代码编辑窗口,并且会看到如下的代码:

3-15 Paint初始化代码

将Paint函数中的内容修改如下:

3-16 Paint函数

然后,我们按下Ctrl + F5就可以看到下面的效果:

3-17 中间结果

看上去感觉样式很奇怪,后边多出了很多空白的区域,而且下方还有一些部分没有显示出来,因为我们还没有根据游戏的参数调整窗口的大小。新建一个名为UpdateSize的函数,输入下图的代码:

3-18 UpdateSize函数接下来我们在SetGame函数中调用这个函数,使得修改游戏参数的时候自动修改窗口大小,代码如下:

3-19 游戏设置函数更新

最后不要忘记了在初始化读入上次游戏参数后也需要修改窗口大小,代码如下:

3-20 初始化更新

最后按Ctrl + F5编译运行,得到最终结果:

3-21 最终结果

到目前为止,扫雷的界面已经基本出来了,下一节我们主要介绍一下菜单的相关代码。

发表评论