扫雷游戏制作过程(C#描述):第五节、菜单操作(续)

上一节中,我们还剩下Setting和Rank两个菜单项目没有设置事件,是因为它们都涉及到了弹出一个新的窗口。这一节,我们将主要介绍创建窗口的方法,以及窗口之间的数据通信。

首先,我们新建一个窗口,在右侧找到解决方案资源管理器,右击Minesweeper项目名,选择添加,如图所示:

5-1 新建窗口

选择新建项,如图所示:

5-2 新建窗口

在弹出的窗口中选择Windows 窗体,并将名称修改为Form_Setting.cs,单击确定,如图所示

5-3 新建窗口

 

将新建的窗口Icon属性修改为扫雷的图标,将MaximizeBox属性修改为False,将Name属性修改为Form_Setting,将BackColor属性修改为White,将Text属性修改为Minesweeper,将FormBorderStyle属性改为FixedSingle。

在左边工具箱面板下公共控件中找到Label控件,双击添加到窗口中,将它的Name属性修改为Label_Width,Text属性修改为“Width:”,并移动到合适的位置,再在工具箱面板中找到NumericUpDown控件,双击添加到窗口中,将它的Name属性修改为NumericUpDown_Width,Minimun属性修改为1,Maximun属性修改为30,(其中Minimum以及Maximun的属性表示为数字的变化范围。)TextAlign属性修改为Center。其中Minimum以及Maximun的属性表示为数字的变化范围。如下图所示:

5-4 设置窗口

重复上述操作,添加雷区高度(Height),地雷数目(Mine)的控件,其中高度的变化范围为1至16,数目的变化范围为1至99。如下图所示:

5-5 设置窗口

 

接下来我们需要添加两个按钮,用来确定修改以及取消修改。在左侧工具箱面板的公共控件中找到Button控件,双击添加到窗体中,将它的Name属性修改为Button_OK,Text属性修改为OK。同时添加一个取消按钮(Cancel),如下图所示:

5-6 设置窗口

然后拖动窗口右下方的白点,调整窗口大小到合适的位置,如下图所示:

5-7 设置窗口

接下来我们用同样的方法和设置来创建一个排行榜的窗口(Form_Rank)。

放置三个标签,分别表示初级(Label_Beginner)、中级(Label_Intermediate)、高级(Label_Expert)的最高分,并且加入两个按钮,表示重新计分(Button_Reset)、确定(OK),如图所示:

5-8 排名窗口

接下来,我们就可以调用这两个窗口了。打开Form_Main窗口,为Setting和Rank分别添加单击事件(双击菜单项,程序自动添加该时间),并且写下如下代码:

5-9 窗口代码

这样,我们就完成了对窗口的调用。接下去,我们先来实现较为简单的Rank窗口。每次读取最高分的数据,这也就要求我们每次记录得分。

打开Settings文件,添加三种等级的最高分,并且将初始值都设置为999,如下图所示:

5-10 设置窗口

 

打开排名窗口,双击窗口标题栏,程序会自动添加一个Load事件,我们在这里添加如下代码:

5-11 读取排名

这样,我们调试一下,就可以看到排名的效果了:

5-12 阶段性结果

接下去我们需要为Reset以及OK按钮添加事件。首先考虑OK按钮,双击按钮,添加单击事件,并且添加如下代码:

5-13 OK按钮

对于Reset按钮,我们添加如下代码:

5-14 Reset按钮

这样,我们就完成了排行榜的功能。接下来我们来考虑设置窗口的功能。我们首先为Cancel按钮添加如下代码:

5-15 Cancel按钮

我们考虑OK按钮,我们需要和Form_Main窗口进行通信,修改Form_Setting的构造函数,如图所示:

5-16 窗口信息传递

接着将Form_Main中nWidth、nHeight、nMine变量设置为公有类型:

5-17 公有设置

然后修改对Setting窗口的调用函数:

5-18 窗口参数传递

至此,我们就完成了Setting窗口和Main窗口的信息连接,双击Setting窗口的标题栏,修改它的Load事件如下,以实现对Main窗口中原有游戏参数的读取:

5-19 原始信息读取

这样,我们运行的时候就可以看到Setting窗口自动获取了Main中的游戏参数:

5-20 阶段性结果

接下来我们为OK按钮添加如下的事件:

5-21 OK按钮

这样,我们就完成了游戏规模的设置,有时候,我们发现弹出来的设置窗口以及排行窗口显示的位置都偏左上角,我们对它进行一些调整,修改它们的StartPosition属性为CenterParent。

最后,在调用完设置窗口后,还需要UpdateSize一下来实现对游戏规模的修改:

5-22 后续操作

最终我们可以实现各种大小的雷区:

5-23 最终结果

这一节暂且讲到这里,下一节我们将会介绍地雷数目以及时间秒数的显示,以及扫雷内部模型的建立。

3 条评论扫雷游戏制作过程(C#描述):第五节、菜单操作(续)

发表评论