C#零基础入门04:打老鼠初级之枚举、重构、事件处理器
一:为界面加入“开始”、“暂停”、“停止”
经过上节课程我们的交互的过程,我们的程序增加了用户友好度,同时也可以记录更为详尽的成绩了。但是我们仍然发现有很多地方需要值得改进(或许你还发现了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:打老鼠初级之枚举、重构、事件处理器的更多相关文章
- 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封装 ...
- 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封装 ...
- 085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用
085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用 本文知识点:构造方法调用 说明:因为时间紧张,本人写博客过程中只是 ...
- 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象
079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...
- 072 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 04 综合案例-数组移位-在指定位置处插入数据方法
072 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 04 综合案例-数组移位-在指定位置处插入数据方法 本文知识点:综合案例-数组移位-在指定位置处插入数据方法 ...
- 057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和
057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和 本文知识点:求整型数组的数组元素的元素值累加和 案例:求整型数 ...
- 042 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 04 案例演示while循环的使用——循环输出英文字母
042 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 04 案例演示while循环的使用--循环输出英文字母 本文知识点:案例演示while循环的使用2 ...
- 038 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 05 案例演示switch结构-星期的表示案例以及总结
038 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 05 案例演示switch结构-星期的表示案例以及总结 本文知识点:案例演示switch结构并对sw ...
- 037 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 04 switch结构
037 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 04 switch结构 本文知识点:Java中的switch结构 选择结构分类 选择结构只有如下2种 ...
随机推荐
- Qt_mingw搭建opencv开发环境
Qt在windows下共有2个版本:mingw和msvc.其中mingw使用gcc编译器,msvc使用微软的VC编译器.针对不同版本Qt,使用Opencv的方式也不同. 区别 msvc, 可以使用op ...
- 循序渐进学.Net Core Web Api开发系列【9】:常用的数据库操作
系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇描述一 ...
- Java中实现多线程的两种方式之间的区别
Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线 ...
- GPU安装
安装驱动 https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_d ...
- jQuery.fn.extend()和jQuery.extend()
jQuery.fn.extend( object ) 一个对象的内容合并到jQuery的原型,以提供新的jQuery实例方法. jQuery.fn.extend()方法继承了jQuery原型($.fn ...
- TCP状态知识总结(图解)
tcp状态: LISTEN:侦听来自远方的TCP端口的连接请求 SYN-SENT:再发送连接请求后等待匹配的连接请求 SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认 ...
- HDU 4813 Hard Code(水题,2013年长春现场赛A题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4813 签到题. 把一个字符串按照格式输出就可以了,很水 #include <stdio.h> ...
- 【Go命令教程】5. go clean
执行 go clean 命令会删除掉执行其它命令时产生的一些文件和目录,包括: 在使用 go build 命令时在当前代码包下生成的与包名同名或者与Go源码文件同名的可执行文件.在Windows下,则 ...
- mysqlsandbox
http://mysqlsandbox.net/ http://www.cnblogs.com/xuanzhi201111/p/3998604.html
- 在ASP.NET MVC4中使用Quartz.NET执行定时任务
本篇在ASP.NET MVC下实践使用Quartz.NET执行定时任务. 首先通过NuGet安装Quartz.NET. 使用Quartz.NET的大致思路是:1.实现IJob接口,定义具体要做的事情2 ...