zoukankan      html  css  js  c++  java
  • 扫雷游戏制作过程(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();
    }
    

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

  • 相关阅读:
    win7系统如何一键清理系统垃圾【系统天地】
    win7无法正常关机的解决方法【系统天地】
    win10系统开机停在请稍候解决教程【系统天地】
    Win7系统一直提示盗版怎么办【系统天地】
    windows8 flash修复怎么操作【系统天地】
    win7电脑运行速度慢如何解决【系统天地】
    Win10系统如何自动清理垃圾缓存文件【系统天地】
    Win7启用NFS服务设置的方法【系统天地】
    win7系统获得管理员取得所有权的方法【系统天地】
    Ubuntu16.04+hadoop2.7.3环境搭建
  • 原文地址:https://www.cnblogs.com/pengpeng123/p/7455224.html
Copyright © 2011-2022 走看看