首页 > 编程语言 > 详细

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

时间:2020-01-02 20:47:24      阅读:85      评论:0      收藏:0      [点我收藏+]

小编前面讲解的知识只是最基本的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++第十一课:面向对象[敲字母游戏]

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!