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

news/2024/7/24 12:41:28

前言

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

菜单操作

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

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

分别双击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编译运行,得到最终结果:
1219808-20170830204423562-1046802508.png
1219808-20170830204433874-2138441657.png
1219808-20170830204449046-915701620.png

双击菜单栏中的New Game,Exit,做如下修改:

private void NewGameToolStripMenuItem_Click(object sender, EventArgs e)
{
    NewGame();
}
private void ExitToolStripMenuItem_Click(object sender, EventArgs e)
{
    Application.Exit();
}

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

转载于:https://www.cnblogs.com/pengpeng123/p/7455224.html


http://www.niftyadmin.cn/n/1498244.html

相关文章

python 语音转文字_《奇巧淫技》系列-Python实现 语音转文字??非也!!是文字转语音,DIY你想要的萝莉音!!!-Go语言中文社区...

本文章纯野生,无任何借鉴或抄袭他人文章。坚持原创前提一:有一篇你很喜欢的文章或者小说,阅读起来眼睛会很干涉之类的。 前提二:老人家看书不方便,将文字转换成语音,再进行播放。 前提三:想DIY你…

今日总结 8/13 8/14

昨天和今天都没有什么内容需要整理发博客的,这两天主要是复习准备开学考试的内容,要复习的东西比较多,另外晚上还上了辅导课,明天继续复习,另外抽空复习复习前端的知识以免忘记。

nsq topic和channel的区别

topic:一个可供订阅的话题。channel:属于topic的下一级,一个topic可以有多个channel。二者关系可以再参考下面两文章:http://www.cnblogs.com/forrestsun/p/3892710.htmlhttp://www.linuxeden.com/html/news/20140301/148960.html举个例子:to…

python的界面文字翻译_我用40行python代码写一个桌面翻译器,很nice

我们进行制作软件所需要的模板库,首先要进行引用。 另外大家要注意:不管你是为了Python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你没有2020最新python入门到高级实战视频教程,可以去小编的Pytho…

Centos上安装CPAN

在用一个reads的QC软件:ngShoRT, 这个软件需要配套的String::Approx, PerlIO::gzip, 那只能下载这两个软件。ngShoRT的说明书上写的是需要用CPAN下载,试了一下虚拟机上没有CPAN,那句只能先安装一个。从来没有安装过,表…

Javascript01——编程语言?计算机基础 ?初识JavaScript ?JavaScript注释?变量的概念?变量的使用 ?数据类型 ?

1 - 编程语言 1.1 编程 编程: 就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过 程。 计算机程序: 就是计算机所执行的一系列的指令集合,而程序全部都是用我们所掌握的语言来编写的,所 以人们要控制计算…

python 九九乘法表 长方形_【转】Python实现不同格式打印九九乘法表

前言:最近在学习Python,学习资源有慕课网上的视频教程、菜鸟教程以及Python官方文档tutorial。虽然了解了Python的基本语法,但是还没有真正意义上输出自己写的代码。代码小白,之前仅学过C,代码上的逻辑问题总是理不清楚…

python frame_python3 selenium自动化 frame表单嵌套的切换方法

在web自动化测试中,测试工程师经常会碰到frame表单嵌套结构,直接定位会报错,我们需要切换表单后才能成功定位。 我拿QQ邮箱登录来作为例子说下frame怎么切换。qq邮箱页面按F12可以看到以下信息:表单的信息如下:width&q…