扫雷游戏制作过程(C#描述):第四节、菜单操作
前言
菜单操作
我们现在的程序单击菜单的时候不会有任何反应,这一节我们主要介绍菜单的相关代码,使得菜单能够正常使用。
现在我们希望在对应级别(初级、中级、高级)的按钮的前显示打勾,以表示目前的游戏等级,并且选择对应级别的按钮,能有相应的变化。我们双击菜单栏中的Beginner便会自动进入相应的函数代码区,在此函数中的代码,便是点击Beginner时所执行的代码。这里做一个说明:每个函数的首字母必须大学,所以此时你必须修改Beginner属性栏中的Name,同理,菜单栏下每个选项的属性中的Name都需要修改,否则会报错。
分别双击Beginner,Intermediate,Export三个菜单栏,做如下修改:
private void BeginnerBToolStripMenuItem_Click(object sender, EventArgs e)
{
//我们令Beginner中的行数,列数,地雷的数量分别为:10,10,10
Sweep_width = 10;
Sweep_high = 10;
Sweep_num = 10;
}
private void IntermediateIToolStripMenuItem_Click(object sender, EventArgs e)
{
//我们令Beginner中的行数,列数,地雷的数量分别为:16,16,40
Sweep_width = 16;
Sweep_high = 16;
Sweep_num = 40;
}
private void ExpertEToolStripMenuItem_Click(object sender, EventArgs e)
{
//我们令Beginner中的行数,列数,地雷的数量分别为:16,30,99
Sweep_width = 30;
Sweep_high = 16;
Sweep_num = 99;
}
为了方便操作,我们自己定义一个NewGame()函数,一个SetLevel()函数,这里说明下,你可能觉得定义的NewGame()函数并多此一举,两个函数合并不就得了,NewGame()函数在后来会补进新的代码,在后面的章节,就会体现出来。操作如下:
private void SetLevel()
{
BeginnerBToolStripMenuItem.Checked = false;
IntermediateIToolStripMenuItem.Checked = false;
ExpertEToolStripMenuItem.Checked = false; //初始化
switch (Sweep_num)
{
case 10: BeginnerBToolStripMenuItem.Checked = true; break;
case 40: IntermediateIToolStripMenuItem.Checked = true; break;
case 99: ExpertEToolStripMenuItem.Checked = true; break;
default: break;
} //判断当前是设置哪个等级,菜单栏中当前等级前显示打钩符号
Properties.Settings.Default.Sweep_high = Sweep_high;
Properties.Settings.Default.Sweep_width = Sweep_width;
Properties.Settings.Default.Sweep_num = Sweep_num;
Properties.Settings.Default.Save(); //保存设置到Settings中
NewGame(); //调用NewGame()函数
}
private void NewGame()
{
UpdateSize(Sweep_width, Sweep_high);
Refresh();
}
此时需要在BeginnerBToolStripMenuItem_Click(object sender, EventArgs e)中调用SetLevel()函数,来保存设置,更改窗口大小,重绘雷区,另外两个函数做同样的修改。
private void BeginnerBToolStripMenuItem_Click(object sender, EventArgs e)
{
//我们令Beginner中的行数,列数,地雷的数量分别为:10,10,10
Sweep_width = 10;
Sweep_high = 10;
Sweep_num = 10;
SetLevel();
}
最后在函数public Form_Main()中,调用SetLevel(),使程序刚运行时,自动在相应的等级前显示打钩按钮。添加如下代码:
SetLevel();
最后按Ctrl + F5编译运行,得到最终结果:
双击菜单栏中的New Game,Exit,做如下修改:
private void NewGameToolStripMenuItem_Click(object sender, EventArgs e)
{
NewGame();
}
private void ExitToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
自此菜单栏的部分功能已经得到实现。