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

前言

这里给出教程原文地址
该项目已经放在github上托管。

菜单操作

我们现在的程序单击菜单的时候不会有任何反应,这一节我们主要介绍菜单的相关代码,使得菜单能够正常使用。

现在我们希望在对应级别(初级、中级、高级)的按钮的前显示打勾,以表示目前的游戏等级,并且选择对应级别的按钮,能有相应的变化。我们双击菜单栏中的Beginner便会自动进入相应的函数代码区,在此函数中的代码,便是点击Beginner时所执行的代码。这里做一个说明:每个函数的首字母必须大学,所以此时你必须修改Beginner属性栏中的Name,同理,菜单栏下每个选项的属性中的Name都需要修改,否则会报错。

分别双击BeginnerIntermediateExport三个菜单栏,做如下修改:

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();
}

自此菜单栏的部分功能已经得到实现。

posted @ 2017-08-30 20:46  pengpeng_123  阅读(1569)  评论(0编辑  收藏  举报