VC++角色游戏中的人物初始化模块代码实例
更新时间:2020年4月25日 17:41 点击:2101
本文以一个实例讲述VC++游戏中的人物角色动画初始化实现代码,本代码只是实现人物角色动画的初始化,不包括其它功能,并不是完整的一个游戏应用,现在将这个角色初始化代码与大家分享。希望能够对大家学习VC++有所帮助。
#include "StdAfx.h" #include "Character.h" CCharacter::CCharacter(void) { } CCharacter::~CCharacter(void) { } //初始化人物 bool CCharacter::InitCharacter() { int i; CString path; //初始化每一帧 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()) { return false; } } //初始化人物大小 int w = m_imgCharacter[0].GetWidth(); int h = m_imgCharacter[0].GetHeight(); this->m_sCharacter.SetSize(w, h); //初始化人物位置 this->m_leftTop.SetPoint(0, VIEWHEIGHT - h - ELEVATION); //初始化为第1帧 this->m_curFrame = 0; return true; } //向前移动(如果移动到了客户区中间, 不继续移动了) void CCharacter::MoveFront() { int border = (VIEWWIDTH - m_sCharacter.cx) / 2; if(this->m_leftTop.x <= border) { this->m_leftTop.x += 4; } } //下一帧 void CCharacter::NextFrame() { // 本可以直接使用求余运算, 但是%求余运算速 // 度及效率不好, 所以使用简单的判断操作代替 //进入下一帧 this->m_curFrame++; if(this->m_curFrame == this->MAXFRAME) this->m_curFrame = 0; } //绘制人物 void CCharacter::StickCharacter(CDC& bufferDC) { int i = 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)); } //释放内存资源 void CCharacter::ReleaseCharacter() { for(int i=0; i<this->MAXFRAME; i++) this->m_imgCharacter[i].Destroy(); }
以下是人物类CCharacter的实现代码:
#pragma once #include<atlimage.h> //地面高度 #define ELEVATION 42 class CCharacter { //静态常成员变量 private: //最大帧数:16 static const int MAXFRAME = 16; //视口客户区宽度 static const int VIEWWIDTH = 790; //视口客户区高度 static const int VIEWHEIGHT = 568; //成员变量 private: CImage m_imgCharacter[MAXFRAME];//人物 CSize m_sCharacter;//人物大小 CPoint m_leftTop;//人物的位置(左上角点) int m_curFrame;//人物的当前帧 //成员函数 public: //初始化人物 bool InitCharacter(); //向前移动 void MoveFront(); //下一帧 void NextFrame(); //绘制人物(注:这里bufferDC是引用参数) void StickCharacter(CDC& bufferDC); //释放内存资源 void ReleaseCharacter(); //构造与析构 public: CCharacter(void); ~CCharacter(void); };
相关文章
VC++ loadlibrary()加载三方dll失败, 返回错误码:126的解决方法
今天在编写VC++ loadlibrary()加载三方dll是总是失败,并且返回错误码:126,这里就为大家分享一下具体的解决方法...2021-03-15- 这篇文章主要介绍了VC++实现选择排序算法简单示例,代码简洁易懂,有助于读者对数据结构与算法的学习,需要的朋友可以参考下...2020-04-25
VC++中HTControl控制类使用之CHTDlgBase对话框基类实例
这篇文章主要介绍了VC++中HTControl控制类使用之CHTDlgBase对话框基类,是比较丰富而实用的功能,需要的朋友可以参考下...2020-04-25- 这篇文章主要介绍了VC++的if语句应用范围分析,对VC++初学者有很好的参考学习价值,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了Vc++ 控件List Control用法总结的相关资料,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了VC++ 中ListCtrl经验总结的相关资料,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了VC++进度条process Bar的用法,是进行VC++应用程序开发中非常常见的实用技巧,需要的朋友可以参考下...2020-04-25
VC++中HTControl的CHTButton按钮控件类用法实例解析
这篇文章主要介绍了VC++中HTControl的CHTButton按钮控件类用法,对于大家进行VC++项目开发有一定的帮助作用,需要的朋友可以参考下...2020-04-25- 这篇文章主要介绍了VC++基于Dx实现的截图程序示例代码,比较实用的功能,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了VC++实现文件与应用程序关联的方法,涉及VC++针对注册表的相关操作技巧,需要的朋友可以参考下...2020-04-25
- 这篇文章主要为大家介绍了VC++ 6.0 C语言实现俄罗斯方块详细教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-04-25
- 这篇文章主要介绍了VC++创建msi文件的方法,对于应用程序的开发有一定的借鉴价值,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了VC++角色游戏中的人物初始化模块,对大家学习VC++有一定的帮助,需要的朋友可以参考下...2020-04-25
VC++实现CStdioFile写入及读取文件并自动换行的方法
这篇文章主要介绍了VC++实现CStdioFile写入及读取文件并自动换行的方法,很实用的功能,需要的朋友可以参考下...2020-04-25- 这篇文章主要为大家详细介绍了DEVC++实现推箱子小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-04-25
- 本文给大家汇总介绍了5种VC++中获取系统时间的方法,十分的简单实用,有需要的小伙伴可以参考下。...2020-04-25
- 这篇文章主要介绍了VC++获得当前进程运行目录的方法,可通过系统函数实现该功能,是非常实用的技巧,需要的朋友可以参考下...2020-04-25
VC++文件监控之FindFirstChangeNotification
因为ReadDirectoryChangesW 上次测试发现不能多级目录监控,所以尝试用FindFirstChangeNotification来实施文件监控,需要的朋友可以参考下...2020-04-25- 这篇文章主要介绍了VC++中进程与多进程管理的方法,以实例形式详细分析了进程与多进程管理中所涉及的进程、子进程、进程的互斥运行与进程的结束等概念与具体实现方法,非常具有参考借鉴价值,需要的朋友可以参考下...2020-04-25
- 本文给大家分享的是使用VC++根据对话框大小调整控件大小的方法和示例代码,有需要的小伙伴可以参考下。...2020-04-25