zoukankan      html  css  js  c++  java
  • C++第十一课:面向对象[敲字母游戏]

    小编前面讲解的知识只是最基本的C语言部分,代码很乱也很臃肿,很难看,如果没有基础的朋友就有可能看不懂。

    下面就正式融入C++面向对象的理念,让代码变得更加通俗易懂,逐步带入高逼格的操作。

    总体来说,代码部分没怎么变化过,只是加入类的运用:

    1.想要加入类的知识,我们首先得学会分析全程,这里需要什么对象?

    2.其次,分析代码的构成,怎样才能让代码变得更清晰,一目明了。

    3.每个人都有一套自己的代码思维,最后剥析面向对象的样式,不至于以后还是使用c语言的代码构成一个程序。

    既然是游戏,就应该有一个地图的对象,还有个操作者(玩家)。因为是最简单的游戏,所以小编只用两个对象,来完成游戏的制作。

    首先还是得创建一个主文件:TypeTheLetterGame.cpp、MyGameMap的class和一个GamePlayer的class。

     前面说到,既然代码没怎么变化,那么就将所有关于地图用到的变量全部写到私有属性之中,回想起前端需要哪些变量:

    1、IMAGE 对象

    IMAGE background;

    IMAGE LB1;

    IMAGE LB2;

    2、地图的宽度和高度坐标

    int m_Xpos;

    int m_yPos;

    3、保存字母的变量

    char Letter;

    ........

    既然知道了这些,就可以初始化游戏界面了,记住,能用到什么操作时,再添加变量,头文件也同样如此,想要用哪些函数时,再添加头文件!

    这里用到图形,所以在MyGameMap这个类上添加

    #include <graphics.h>
    

    在InitGame()函数内加载图片资源,和初始化图形界面。

    void MyGameMap::InitGame()
    {
    	loadimage(&background,"images//background.jpg",600,600);
    	loadimage(&LB1,"images//LB1.jpg",50,50);
    	loadimage(&LB2, "images//LB2.jpg", 50, 50);
    	initgraph(this->background.getwidth(),this->background.getheight());
    }
    

    如果不确定自己写的代码是否有问题,就带入主文件调试运行下:

    小编编写的没有问题。

     然后就是初始化萝卜图掉下来的那一瞬间:

     再将UpdateGame()函数调到主文件之中运行看看。

    最后就是让字母显示和敲打字母的操作了:

    我们得用到随机机制,所以需要再引用time.h的头文件到MyGameMap上。

    #include <time.h>
    

     这里为什么在构造函数内写,因为类的构造函数,有个规则,只要这个类被实例化(初始化)首先调用的便是构造函数,小编将x和y坐标全部初始化为0;

    显示字母:

     操作:打字母,萝卜图消失,需要用到敲击键盘的状态的函数,再次引用conio.h

    #include <conio.h>
    

    玩家的操作,将GamePlayer的对象作为MyGameMap一个priavate私有指针属性,因为只需要用到很多次玩家的操作,但在无限循环下,只要实例化一次即可,请放在MyGameMap构造函数内:

     

     别忘记了调用这个自定义的类!!!

     

     最后主体源文件无限循环:

     

    条条英符铸平凡,行行代码显乾坤;
  • 相关阅读:
    使用excel2003中的solver解决最优化问题
    图的邻接表存储方式的建立
    LINUX下使用VI
    LINUX下基本命令
    应用程序各对象创建的顺序
    zookeeper常遇错误详解
    MapReduce_partition
    MapReduce_TopK
    MapReduce_MaxValue
    Hbase用java基础操作
  • 原文地址:https://www.cnblogs.com/VisiousDragon/p/12141647.html
Copyright © 2011-2022 走看看