zl程序教程

您现在的位置是:首页 >  后端

当前栏目

VC++角色游戏中的人物初始化模块代码实例

C++实例游戏模块代码 初始化 角色 人物
2023-06-13 09:15:41 时间

本文以一个实例讲述VC++游戏中的人物角色动画初始化实现代码,本代码只是实现人物角色动画的初始化,不包括其它功能,并不是完整的一个游戏应用,现在将这个角色初始化代码与大家分享。希望能够对大家学习VC++有所帮助。

#include"StdAfx.h"
#include"Character.h"
CCharacter::CCharacter(void)
{
}
CCharacter::~CCharacter(void)
{
}
//初始化人物
boolCCharacter::InitCharacter()
{
inti;
CStringpath;
//初始化每一帧
for(i=0;i<this->MAXFRAME;i++)
{
//一个小技巧——获取人物每一帧png的路径
path.Format(L"res\\%d.png",i+1);
this->m_imgCharacter[i].Load(path);
//如果加载失败
if(this->m_imgCharacter[i].IsNull())
{
returnfalse;
}
}
//初始化人物大小
intw=m_imgCharacter[0].GetWidth();
inth=m_imgCharacter[0].GetHeight();
this->m_sCharacter.SetSize(w,h);
//初始化人物位置
this->m_leftTop.SetPoint(0,
VIEWHEIGHT-h-ELEVATION);
//初始化为第1帧
this->m_curFrame=0;
returntrue;
}
//向前移动(如果移动到了客户区中间,不继续移动了)
voidCCharacter::MoveFront()
{
intborder=(VIEWWIDTH-m_sCharacter.cx)/2;
if(this->m_leftTop.x<=border)
{
this->m_leftTop.x+=4;
}
}
//下一帧
voidCCharacter::NextFrame()
{
//本可以直接使用求余运算,但是%求余运算速
//度及效率不好,所以使用简单的判断操作代替
//进入下一帧
this->m_curFrame++;
if(this->m_curFrame==this->MAXFRAME)
this->m_curFrame=0;
}
//绘制人物
voidCCharacter::StickCharacter(CDC&bufferDC)
{
inti=this->m_curFrame;
//透明贴图
this->m_imgCharacter[i].TransparentBlt(bufferDC,
this->m_leftTop.x,this->m_leftTop.y,
this->m_sCharacter.cx,this->m_sCharacter.cy,
RGB(0,0,0));
}
//释放内存资源
voidCCharacter::ReleaseCharacter()
{
for(inti=0;i<this->MAXFRAME;i++)
this->m_imgCharacter[i].Destroy();
}

以下是人物类CCharacter的实现代码:

#pragmaonce
#include<atlimage.h>
//地面高度
#defineELEVATION42
classCCharacter
{
//静态常成员变量
private:
//最大帧数:16
staticconstintMAXFRAME=16;
//视口客户区宽度
staticconstintVIEWWIDTH=790;
//视口客户区高度
staticconstintVIEWHEIGHT=568;
//成员变量
private:
CImagem_imgCharacter[MAXFRAME];//人物
CSizem_sCharacter;//人物大小
CPointm_leftTop;//人物的位置(左上角点)
intm_curFrame;//人物的当前帧
//成员函数
public:
//初始化人物
boolInitCharacter();
//向前移动
voidMoveFront();
//下一帧
voidNextFrame();
//绘制人物(注:这里bufferDC是引用参数)
voidStickCharacter(CDC&bufferDC);
//释放内存资源
voidReleaseCharacter();
//构造与析构
public:
CCharacter(void);
~CCharacter(void);
};