码迷,mamicode.com
首页 > 编程语言 > 详细

C++第十一课:面向对象[敲字母游戏]

时间:2020-01-02 20:28:46      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:朋友   代码   私有   char   include   运用   height   很多   面向   

小编前面讲解的知识只是最基本的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构造函数内:
技术图片

 

 技术图片

 

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

技术图片

 

 技术图片

 

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

技术图片

 

 技术图片

C++第十一课:面向对象[敲字母游戏]

标签:朋友   代码   私有   char   include   运用   height   很多   面向   

原文地址:https://www.cnblogs.com/VisiousDragon/p/12141647.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!