• C#零基础入门03:打老鼠初级


    一:在源码管理器中打开VS

    注意,下文这样的打开方式是在 TFS 的源码服务器中打开解决方案。如果我们使用 SVN,则直接在硬盘上打开解决方案就可以了。

    打开VS:

    wps_clip_image-23033

    然后按上图中的步骤1和2(双击2处),打开我们的解决方案,如下:

    wps_clip_image-23782

    注意,双击红框,会显示Solution Explorer。

    我们在上一节中,只是创建了打老鼠的解决方案,还完全没有编写任何代码。这个时候运行解决方案一下(记得吗,菜单中Debug->Start without debug,或Ctrl+F5。我喜欢用快捷键,而且你也必须快速熟悉起这些快捷键,使用快捷键可以节约时间)。

    运行起来后,是一个空白的Windows窗体,如下:

    wps_clip_image-2595

     

    二:导入资源文件

    现在我们就要在这个窗体上打老鼠了。

    打老鼠这个游戏的最终效果图如下:

    wps_clip_image-9368

    为了完成这个游戏,有两个图片资源要用到(请自行右键下载):

    bg

    bg.png

    mouse

    mouse.png

    请把这两个图片保存到我们的项目的根目录下,请查看下节视频进行图片资源的导入及背景设置:

    最后,我们看到的整个VS画面应该是这样的:

    wps_clip_image-14667

     

    三:实现最简单的功能

    接下来,我们就该简单的把打老鼠游戏的整个编码实现思想说一下了。我们看到背景上有11个老鼠洞:

    1:首先给11个老鼠洞都覆盖上老鼠形象;

    2:把全体老鼠形象设置为不可见;

    3:给程序设定一个始终,让时钟每隔1秒随机显示一个老鼠形象;

    四:视频

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

    五:代码讲解

    现在,我们来看看视频中的代码到底是什么意思:

            private List<PictureBox> _mouses = new List<PictureBox>();
            private Timer _timer = new Timer();
            private Random _random = new Random();
            private PictureBox _oldMouse;
            private int _score = 0;

    在这里,我们定义了一些变量,其中:

      _mouses 用来存放全部的老鼠图片;
      _timer 是一个计时器;
      _random 在这里代表了一个随机数;
      _oldMouse 在这里当前正在出现的那只老鼠;
      _score 用于记录分数,暂时还没起到作用;

    再看下面这段代码:

                foreach (Control item in this.Controls)
                {
                    if(item is PictureBox)
                    {
                        _mouses.Add(item as PictureBox);
                    }
                }

                _timer.Interval = 1000;
                _timer.Tick += _timer_Tick;
                _timer.Start();

      foreach 表示这是一个循环,我们需要把所有的老鼠都加入到 _mouses 这个变量中去,因为一开始这个变量中是空的,没有老鼠的;
       _timer.Interval = 1000; 表示为定时器的时间设置为 1 秒;
       _timer.Tick += _timer_Tick; 表示定时器定时时间到的时候,要触发一个函数,这个函数叫 _timer_Tick;
       _timer.Start(); 表示定时器开始计时吧;

    再看定时器触发的这个函数:

            void _timer_Tick(object sender, EventArgs e)
            {
                if(_oldMouse != null)
                {
                    _oldMouse.Visible = false;
                }

                int index = _random.Next(1, 11);
                _oldMouse = _mouses[index];

                _oldMouse.Visible = true;
            }

    在这个函数里面的逻辑就是,如果当前有老鼠正在显示着,就应该先隐藏,让另外一只老鼠出现;

    运行程序,我们就会发现每隔 1 秒,就会随机出现一只老鼠;

    现在,我们继续完善代码,要实现:当老鼠形象出现的时候,鼠标击中了老鼠则计分+1,并显示出来;

    实际上,只要修改上面的 foreach 循环中的代码为:

                foreach (Control item in this.Controls)
                {
                    if(item is PictureBox)
                    {
                        _mouses.Add(item as PictureBox);
                        item.MouseDoubleClick += item_MouseDoubleClick;
                    }
                }

    即,为老鼠增加鼠标双击事件,其事件方法为:

            void item_MouseDoubleClick(object sender, MouseEventArgs e)
            {
                _score++;
                _labelScore.Text = _score.ToString();
            }

    这就完成了“鼠标击中了老鼠则计分+1,并显示出来”,我们看到,上面多了个没见过的变量  _labelScore,它是怎么出现的呢,看视频。

     

    六:截止目前为止的打老鼠知识点

    到目前为止,我们实现的打老鼠游戏虽然简单,却已经包含了很多的语法知识,如下11个知识点:

    wps_clip_image-14954

    接下来,我们就需要一一学习一下这些知识。(注意,在本节下面的详细叙述当中,各个知识点我会只讲到当前必须知道的程度,随着课程的深入会逐步补充各个知识点的深入阐述。)

    1和2:被引用的命名空间以及定义当前的类的命名空间

    把类在归类一下,就叫命名空间。

    命名空间和文件夹的关系?没有关系!当然,常用的做法是,一个命名空间就使用一个文件夹。

    如果我们在当前类中要引用到别的类,则方便的做法是把别的类所在的命名空间用using引入进来,如上图的1;

    反过来,我们现在在编写打老鼠这个类,就需要为当前的这个类定义一个命名空间,如上图的2;

    3和4:类和实例

    在C#的世界中,代码是以类为单位组织起来的,我们可以看到:

    public partial class Form1 : Form

    Form1就是一个类。关于一个类的最简单的形式如下:

    class Mouse

    {

    }

    至于打老鼠游戏中的Form1这个类声明当中的partial和后面的冒号后的内容,我们暂时可以不管它。

    类和文件的关系?没有关系!当然,常用的做法是,一个类使用一个文件。

    对类使用new关键字,就产生了类的一个实例,如:

    Mouse aMouse = new Mouse();

    5和10和11. 变量

    在类以内,方法以外,没有修饰static的变量,为实例变量;

    方法以内的变量,叫做局部变量;

    变量在方法的声明内,叫做方法参数;

    变量(或者说变量名),代表的就是某个你要操作的对象。

    6和9. 方法

    方法定义了类的行为,也就是类可以干什么。

    有一类特殊的方法叫做构造器。它是在产生类的实例的时候首先被调用的。

    7. 循环结构

    foreach,for,while,都属于循环结构,光看代码,大家应该都能准确理解起意思,不在赘述。

    8. 条件结构

    If属于条件结构,很简单,不再赘述。

    同属于条件结构的还有switch和三元运算符,等我们使用到的时候一并讲解,这里不再赘述。

    微信扫一扫,关注最课程,获取每日一练

  • 相关阅读:
    H5页面引用百度地图绘制车辆历史轨迹
    js 银行卡号校验
    PC页面客服微信QQ弹窗(鼠标移入显示移出隐藏)
    js 识别二维码
    js 生成二维码
    apicloud APP沉浸式状态栏设置
    微信公众号页面video标签播放视频兼容问题
    EasyUI 导出数据表格 (Export DataGrid)
    c#部署程式到服務器插入數據到oracleDB亂碼
    asp.net JS使用MVC下載(導出Excel)
  • 原文地址:https://www.cnblogs.com/luminji/p/4346338.html
Copyright © 2020-2023  润新知