前言

这里给出教程原文地址

该项目已经放在github上托管。

发布版已经分享到百度网盘

菜单操作(续)

接着节前一章节的内容,我们继续完善菜单栏的功能。

我们首先,先完善Rank的选项,我们希望我们的效果是在我们点击Rank后,能弹出一个窗口,上面显示记录;那么我们就需要建立一个新的窗口,在右侧找到解决方案资源管理器,右击MineSweeper项目名,选择添加,如图所示:



找到右下方的属性面板,修改一些属性:

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

接着在Rank窗口上做如下操作:

  • 在左边工具箱面板下公共控件中找到Label控件,双击添加到窗口中,Text属性修改为初级:,并移动到合适的位置(中级和高级同理)。
  • 在左边工具箱面板下公共控件中找到textBox控件,双击添加到窗口中,Name属性修改为TextBox_Beginner,并移动到合适的位置(中级和高级同理)。
  • 在左边工具箱面板下公共控件中找到Button控件,双击添加到窗口中,Text属性修改为重置Name属性改为Reset,并移动到合适的位置(取消同理,Name改为Cancel)。

效果如下:

现在我们又有三个数据初级记录,中级记录,高级记录需要保存下来,双击Settings,做如下修改:

分别双击重置按钮和取消按钮,进入其代码区,进行如下修改:

private void Reset_Click(object sender, EventArgs e)
{
Properties.Settings.Default.beginner = 999999999;
Properties.Settings.Default.intermediate = 999999999;
Properties.Settings.Default.expert = 999999999;
Properties.Settings.Default.Save(); this.TextBox_Beginner.Text = "999999999";
this.TextBox_Importmediate.Text = "999999999";
this.TextBox_Export.Text = "999999999";
}
private void Cancel_Click(object sender, EventArgs e)
{
this.Close();
}

我们希望Form_Rank窗口在弹出时,便显示数据,所以需要在对其进行初始化:

public Form_Rank()
{
InitializeComponent();
this.TextBox_Beginner.Text = string.Format("{0}", Properties.Settings.Default.beginner);
this.TextBox_Importmediate.Text = string.Format("{0}", Properties.Settings.Default.intermediate);
this.TextBox_Export.Text = string.Format("{0}", Properties.Settings.Default.expert);
}

现在Form_Rank窗口已经做的差不多了,现在需要在按下菜单栏中的Rank,跳出此窗口,并且此Form_Rank窗口出现在Sweeper窗口的正中央。回到Sweeper.cs,双击菜单栏中的Rank,进入其代码区,做如下修改:

private void RankRToolStripMenuItem_Click(object sender, EventArgs e)
{
Form_Rank k = new Form_Rank();
int h = (this.ClientSize.Height - k.ClientSize.Height) / 2;
int w = (this.ClientSize.Width - k.ClientSize.Width) / 2;
k.Show();
k.Location = new Point(this.Location.X + w, this.Location.Y + h); //控制位置
}

运行后效果如下:

对于声音Audio,我们需要把声音设置保存到Settings中,如下图:

双击Audio,进入代码区,做如下修改:

private void AudioAToolStripMenuItem_Click(object sender, EventArgs e)
{
Properties.Settings.Default.Audio = !Properties.Settings.Default.Audio;
AudioAToolStripMenuItem.Checked = Properties.Settings.Default.Audio;
Properties.Settings.Default.Save();
}

并在程序开始运行时,需要初始化在函数public Form_Main()增加:

AudioAToolStripMenuItem.Checked = Properties.Settings.Default.Audio; //初始化音量设置

运行效果如下:

双击菜单Help下的about,进入其代码区,做一些修改(此处本人做的粗糙,你可以发挥你的想象力,进行更改)

private void AboutAToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("Author: pengpeng\n\nVersion:1.0.1", "about");
}

运行后效果如下

扫雷游戏制作过程(C#描述):第五节、菜单操作(续)的更多相关文章

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

    前言 这里给出教程原文地址. 该项目已经放在github上托管. 菜单操作 我们现在的程序单击菜单的时候不会有任何反应,这一节我们主要介绍菜单的相关代码,使得菜单能够正常使用. 现在我们希望在对应级别 ...

  2. 扫雷游戏制作过程(C#描述):第二节、界面设计

    前言 这里给出教程原文地址. 该项目已经放在github上托管. 扫雷界面设计 界面的设计,首先需要创建一个菜单栏.具体方法在左边找到工具箱窗口,展开其中的菜单和工具栏,找到MenuStrip选项,双 ...

  3. 扫雷游戏制作过程(C#描述):第三节、雷区绘制

    前言 这里给出教程原文地址. 该项目已经放在github上托管. 绘制雷区 这一节我们主要涉及界面中雷区的绘制.绘制雷区需要三个变量来保存雷区行数.列数.以及地雷的数量.而且我们希望能够自动获取上次游 ...

  4. 扫雷游戏制作过程(C#描述):第一节、创建项目

    前言 起初做扫雷是同学在做,我也跟着做了.做的比较low,其实第一次做这种东西,自己对自己的要求也不高,注重在了解一下,一个app应用程序是怎么产生的..net开发平台,用c#敲的.建议大家一些不懂的 ...

  5. Unity3D_(游戏)2D简单游戏制作过程:捕获高空掉落保龄球

      游戏介绍:通过鼠标的左右移动,可以控制帽子的移动,当帽子接到下落的保龄球时,会出现火花效果.没有接到保龄球时,保龄球落到草地上,过10S后会自动消失. 实现效果: 素材+Unity3D源代码:传送 ...

  6. BabyLinux制作过程详解

    转:http://www.360doc.com/content/05/0915/14/1429_12641.shtml BabyLinux制作过程详解 作者:GuCuiwen email:win2li ...

  7. [NOIP2015 普及组] 扫雷游戏

    [NOIP2015 普及组] 扫雷游戏 难度:入门 题目描述 扫雷游戏是一款十分经典的单机小游戏.在nn行mm列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格).玩家翻开 ...

  8. C# -- HttpWebRequest 和 HttpWebResponse 的使用 C#编写扫雷游戏 使用IIS调试ASP.NET网站程序 WCF入门教程 ASP.Net Core开发(踩坑)指南 ASP.Net Core Razor+AdminLTE 小试牛刀 webservice创建、部署和调用 .net接收post请求并把数据转为字典格式

    C# -- HttpWebRequest 和 HttpWebResponse 的使用 C# -- HttpWebRequest 和 HttpWebResponse 的使用 结合使用HttpWebReq ...

  9. gantt甘特图的制作过程

    甘特图主要是用来做项目管理的,可以清楚的看到任务间的逻辑关系,任务与时间关系和任务间并行关系. 在甘特图中,横轴方向表示时间,纵轴方向并列着活动列表.图表内可以用线条.数字.文字代号等来表示计划(实际 ...

随机推荐

  1. [BZOJ 1058][ZJOI 2007]报表统计 平衡树+线段树

    考试的时候看见这道题,感觉自己能AC掉,然后就冲着正解去了.然后想了想数据结构,应该是平衡树.然而蒟蒻的我忘了平衡树怎么打了..然后就根据自己的记忆和理解打了出来.然后我简单的以为相邻的用个链表就能解 ...

  2. [bzoj4832]抵制克苏恩 概率dp

    考试的时候打了个搜索,时间比较短,样例又非常的弱,实在不太清楚他这个到底是什么意思. 不过lc大神好腻害,讲解了一下非常的清楚了. f[i][j][k][l]表示第i次伤害(啊),一滴血j个,两滴血k ...

  3. iOS 横竖屏切换解决方案

    iOS要实现横竖屏切换很简单,不需要使用任何第三方,只需要实现几个方法就可以了. 1.设置系统支持横竖屏[General]->[Targets]-> [Deployment info]-& ...

  4. Linux - 简明Shell编程09 - 重定向(Redirection)

    脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash pwd > 1.log ...

  5. UNIX 高手的 10 个习惯

    引言 当您经常使用某个系统时,往往会陷入某种固定的使用模式.有时,您没有养成以尽可能最好的方式做事的习惯.有时,您的不良习惯甚至会导致出现混乱.纠正此类缺点的最佳方法之一,就是有意识地采用抵制这些坏习 ...

  6. 使用进程池规避Python的GIL限制

    操作系统 : CentOS7.3.1611_x64 python版本:2.7.5 问题描述 Python的GIL会对CPU密集型的程序产生影响,如果完全使用Python来编程,怎么避开GIL的限制呢? ...

  7. Failed to load JavaHL Library. These are the errors that were encountered:

    问题: Failed to load JavaHL Library.These are the errors that were encountered:no msvcp100 in java.lib ...

  8. How to generate file name according to datetime in bat command

    On the command line, note: must copy and paste below lines of code and then execute them one by one: ...

  9. js 小数计算为啥和想象中不一样!

    今天遇到了一个比较有趣的事,如果要你计算0.1+0.2等于多少你会怎么回答? "0.3啊!"你可能都不会考虑.我也一样,当a=0.1,b=0.2时 if(a+b === 0.3){ ...

  10. ARM处理器架构的Thumb指令集中关于IT指令的使用

    在ARMv6T2以及ARMv7架构扩展了Thumb指令集,其中加入了IT指令,进一步增强了代码的紧凑性. Thumb中有一个比较有意思的指令--IT,这条指令用于根据指定的条件来执行后面相继的四条指令 ...