闲来无事用VC++写一个小游戏,消灭星星【连载五】
大家每次都可以在页面中下载本节内容的实现代码,一步一步从简单开始,逐步完成游戏的各种功能,如果大家有任何问题也欢迎留言交流。
1、本节要达到的效果:给游戏界面添加两个按键,鼠标经过时能高亮显示并显示提示信息,点击鼠标左键能够执行相应自定义操作,弹出提示对话框。
2、准备添加一个游戏按键
上一节我们说到了图像的移动,增加了很多游戏色彩。那么我们这一节,需要添加一个和玩家互动的游戏按钮。我们都知道一个游戏或程序少不了的控件要素,就是游戏按钮,它能让我们用户根据按钮选择不同的游戏内容,从而产生互动。从另一方面来说,如果游戏不能从玩家那里获取到一定的交互信息,游戏会变得非常枯燥无味。按键效果如下:
备注:我们暂时去掉上节图片随鼠标移动的效果,调整好图片的位置后继续添加游戏内容。
3、添加按键前的准备工作
从这里开始,我们需要添加一些类,为了文件便于管理,我们将所有的类文件都放在一个名为Library的文件夹中。具体添加类的操作方法各异,这里就不具体描述,达到目的就行,如果还有问题请留言讨论。
我们将在程序开始位置加入以下代码,在Library.h和Library.cpp中引用所有自定义类的头文件和源文件,详细代码见本节附件。
//插入自定义类,并放入Library文件夹
#include "Library/Library.h"
#include "Library/Library.cpp"
第一步:添加矩形(Rect)类
所有的按键都需要响应鼠标点击等消息后做出相应的处理,那么怎么判断鼠标是否在按键上呢,就需要给按键指定一个矩形区域,如果鼠标点击时的坐标在按键的矩形区域内则说明需要进行处理,否则无需处理。
加添一个矩形区域Rect类的的代码如下:
class Rect
{
public:
//矩形的左上角和右下角坐标分别为(ax,ay)和(bx,by)
float ax;
float ay;
float bx;
float by;
public:
Rect(float rx=0,float ry=0,float tx=0,float ty=0);
//获取矩形区域的水平宽度
float GetWidth();
//获取矩形区域的垂直高度
float GetHeight();
//将矩形区域移动到指定位置,有四个参数时,矩形的宽度和高度可能会根据参数改变宽度和高度
void MoveTo(float rx,float ry,float tx,float ty);
//将矩形区域移动到指定位置,有两个参数时,矩形会在保持宽度和高度的情况下,移动到指定的位置坐标
void MoveTo(float rx,float ry);
//判断指定坐标是否在矩形区域范围内
bool OnOver(float rx,float ry);
};
Rect::Rect(float rx,float ry,float tx,float ty)
{
MoveTo(rx,ry,tx,ty);
}
float Rect::GetWidth()
{
return bx-ax;
}
float Rect::GetHeight()
{
return by-ay;
}
void Rect::MoveTo(float rx,float ry,float tx,float ty)
{
ax=rx;
ay=ry;
bx=tx;
by=ty;
}
void Rect::MoveTo(float rx,float ry)
{
bx+=rx-ax;
by+=ry-ay;
ax=rx;
ay=ry;
}
bool Rect::OnOver(float rx,float ry)
{
if((ax<=rx && rx<bx) && (ay<=ry && ry<by))
{
return true;
}
else
{