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

 更新时间:2014年08月11日 09:59:12   投稿:shichen2014  
这篇文章主要介绍了VC++角色游戏中的人物初始化模块,对大家学习VC++有一定的帮助,需要的朋友可以参考下

本文以一个实例讲述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);
};

相关文章

  • C++ throw关键字实现抛出异常和异常规范

    C++ throw关键字实现抛出异常和异常规范

    本文主要介绍了C++ throw关键字实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 详解C语言中symlink()函数和readlink()函数的使用

    详解C语言中symlink()函数和readlink()函数的使用

    这篇文章主要介绍了详解C语言中symlink()函数和readlink()函数的使用,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • c++ 临时对象的来源

    c++ 临时对象的来源

    大家可能对这个临时对象这个概念还不是很清楚,那么首先我们花一些时间来理解临时对象
    2013-01-01
  • C++之vector容器的swap方法解读

    C++之vector容器的swap方法解读

    这篇文章主要介绍了C++之vector容器的swap方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • C语言实现的程序员老黄历实例

    C语言实现的程序员老黄历实例

    这篇文章主要介绍了C语言实现的程序员老黄历,涉及日期的判定及流程控制的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • VisualStudio2010安装教程

    VisualStudio2010安装教程

    这篇文章通过图文并茂的形式给大家介绍VisualStudio2010安装教程,在日常开发中是必不可少的搭建过程,感兴趣的朋友跟随小编一起看看吧
    2021-11-11
  • C++实现的大数相乘算法示例

    C++实现的大数相乘算法示例

    这篇文章主要介绍了C++实现的大数相乘算法,结合实例形式分析了C++大数相乘的概念、原理及代码实现技巧,需要的朋友可以参考下
    2017-08-08
  • 使用C语言生成图片的base64编码的代码实现

    使用C语言生成图片的base64编码的代码实现

    Base64编码是一种广泛使用的编码方案,将任意二进制数据转换为可打印的ASCII字符字符串,在实际应用中,Base64编码常见于电子邮件附件、数据库中存储非文本数据等多种场景,本文将给大家介绍使用C语言生成图片的base64编码的代码实现,需要的朋友可以参考下
    2024-08-08
  • 浅谈c语言中类型隐性转换的坑

    浅谈c语言中类型隐性转换的坑

    下面小编就为大家带来一篇浅谈c语言中类型隐性转换的坑。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • 使用C语言实例描述程序中的内聚和耦合问题

    使用C语言实例描述程序中的内聚和耦合问题

    这篇文章主要介绍了用C语言实例描述程序中的内聚和耦合,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08

最新评论