一:为界面加入“开始”、“暂停”、“停止”

经过上节课程我们的交互的过程,我们的程序增加了用户友好度,同时也可以记录更为详尽的成绩了。但是我们仍然发现有很多地方需要值得改进(或许你还发现了BUG?不着急。),首要的,似乎不应该让界面一出现,游戏就开始,我们需要为程序增加“开始”、“暂停”、“停止”按钮。而且,游戏太功能太单一了,我们似乎应该增加一个难度等级,没错,暂时就分为“简单”、“中等”、“难”吧。

现在,我们就来增加这些功能,查看视频。

二:视频

非公开部分,请联系最课程(www.zuikc.com

三:为游戏增加难度等级

完成了UI,接下来就要为那么多的事件处理器增加游戏的逻辑,功能实现请看视频。

四:视频

非公开部分,请联系最课程(www.zuikc.com

五:视频总结

1:首先,我们学到了如何使用如下快捷键,要知道,熟练的使用快捷键会增加你写代码的信心:

Tab:让VS帮我们快速完成代码;

Ctrl+C:不仅仅是复制哦,而是在不选中任何内容的时候进行复制;

Ctrl+D:默认在当前之上粘贴剪贴板中的整行;

Ctrl+Shift+箭头:选单词;

Alt+右键头:智能感知;

Ctrl+K+D:自动对齐代码;

2:用switch取代if

当出现太多的if的使用,可以尝试使用switch来进行取代if。当然如果出现了3个以上的if条件,就要小心了,也许我们应该修改代码了,因为太多的if条件,让代码显得那么的不面向对象。别急,我们即将会学到面向对象。

3:新增文件

在这个例子中,我们学习了如何为项目增加一个文件;

4:如果出现了重复代码,就需要进行提炼方法,这种让代码质量持续改进的方法,有一个很时髦的名字:重构

我们在下下节课中,将会学习面向对象编程(OOP),我们会进行大量的重构,我们应该要期待OOP,因为这会让我们像写诗一般去写代码。

5:枚举

枚举在C#中,是一个跟class等级别重要的概念。我们已经在之前的课程里讲过,类有属性和行为,而枚举呢,只有一组代表不同含义的指,如:周一到周日,可以定义一个这样的枚举:

enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

我们在我们的游戏中,将难度定义成了一个枚举,如下:

enum Level
{
    Basic,
    Middle,
    High
}

6:事件处理器

事件处理器是什么,就是方法,如果一个方法被赋值给了一个事件变量,那么这个方法就是一个事件处理器。原则上,这个概念我们会在下一小节讲到,包括委托处理器,但是如果你一定要对Button按钮事件现在就做了解,那么我们就该知道这个概念。那么,什么叫给事件变量赋值呢?其实我们已经见过了这样的代码了:

在我们这个游戏当中,我们当前的代码中:

就是一个事件处理器,它被赋值给Button的Click事件变量的语句是VS自动给我们生成在了Form1.Designer.cs中了,如下:

this.buttonStart.Click += new System.EventHandler(this.buttonStart_Click);

我们在今天的编码中,并没有编写如上的语句,是因为VS做好事,帮我们写了这样的语句,但是,如果我们一定要深究,为什么我Click之后,它就会自动执行游戏开始的代码呢?OK,看一看Form1.Designer.cs,就什么都知道了。

微信扫一扫,关注最课程(www.zuikc.com),获取更多我的文章,获取软件开发每日一练

C#零基础入门04:打老鼠初级之枚举、重构、事件处理器的更多相关文章

  1. 094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 04 static关键字(续)

    094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  2. 090 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 04 使用包进行类管理(2)——导入包

    090 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  3. 085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用

    085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用 本文知识点:构造方法调用 说明:因为时间紧张,本人写博客过程中只是 ...

  4. 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象

    079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...

  5. 072 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 04 综合案例-数组移位-在指定位置处插入数据方法

    072 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 04 综合案例-数组移位-在指定位置处插入数据方法 本文知识点:综合案例-数组移位-在指定位置处插入数据方法 ...

  6. 057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和

    057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和 本文知识点:求整型数组的数组元素的元素值累加和 案例:求整型数 ...

  7. 042 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 04 案例演示while循环的使用——循环输出英文字母

    042 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 04 案例演示while循环的使用--循环输出英文字母 本文知识点:案例演示while循环的使用2 ...

  8. 038 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 05 案例演示switch结构-星期的表示案例以及总结

    038 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 05 案例演示switch结构-星期的表示案例以及总结 本文知识点:案例演示switch结构并对sw ...

  9. 037 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 04 switch结构

    037 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 04 switch结构 本文知识点:Java中的switch结构 选择结构分类 选择结构只有如下2种 ...

随机推荐

  1. AC自动机学习笔记-2(Trie图&&last优化)

    我是连月更都做不到的蒟蒻博主QwQ 考虑到我太菜了,考完noip就要退役了,所以我决定还是把博客的倒数第二篇博客给写了,也算是填了一个坑吧.(最后一篇?当然是悲怆のnoip退役记啦QAQ) 所以我们今 ...

  2. python 单变量线性回归

      单变量线性回归(Linear Regression with One Variable)¶ In [54]: #初始化工作 import random import numpy as np imp ...

  3. 【LOJ】#6433. 「PKUSC2018」最大前缀和

    题解 神仙的状压啊QAQ 设一个\(f[S]\)表示数字的集合为\(S\)时\(sum[S]\)为前缀最大值的方案数 \(g[S]\)表示数字集合为\(S\)时所有前缀和都小于等于0的方案数 答案就是 ...

  4. nginx no input file specified

    今天在lnmp上调试php项目,之前已经在上面测试过tp5框架,可以正常访问.但是新项目由于项目中有些路径是写固定路径的.为了不去修改代码.配置新项目的时候,为新项目设置新的目录.问题就出现了,网页提 ...

  5. SQL中的坑

    一.where,group by,having --group by 和having 解释:前提必须了解sql语言中一种特殊的函数:聚合函数, 例如SUM, COUNT, MAX, AVG等.这些函数 ...

  6. 踩过无数坑实现的哈夫曼压缩(JAVA)

    最近可能又是闲着没事干了,就想做点东西,想着还没用JAVA弄过数据结构,之前搞过算法,就试着写写哈夫曼压缩了. 本以为半天就能写出来,结果,踩了无数坑,花了整整两天时间!!orz...不过这次踩坑,算 ...

  7. .NET工作准备--03进阶知识

    (已过时) 高级特性,多线程编程,单元测试; 第一部分 .net高级特性 1.委托:提供安全的函数回调机制; *基本原理:与C++中的函数指针相似;安全--它和其他所有.net成员一样是一种类型,任何 ...

  8. 一个线上程序bug,由通用补数程序引起

    下游发现接口可用率非100%,马上线上查看,发现数据在有些情况下通用补数的数据是空, 有20%的用户是没有相应偏好等的数据的,需要通用补数来补数,结果通用补数没有数据. 通用补数数据的检查报警时必须要 ...

  9. luogu P2757 [国家集训队]等差子序列

    题目链接 luogu P2757 [国家集训队]等差子序列 题解 线段树好题 我选择暴力 代码 // luogu-judger-enable-o2 #include<cstdio> inl ...

  10. [TC13761]Mutalisk

    [TC13761]Mutalisk 题目大意: 有\(n(n\le20)\)个坏人,第\(i\)个坏人的血量为\(A_i(A_i\le60)\).你可以每次攻击\(3\)个坏人,并分别造成\(9\)点 ...