VC++编程技术角色游戏中的人物初始化模块代码实例
小职 2018-07-05 来源 : 阅读 1119 评论 0

摘要:本文主要向大家介绍了VC++编程技术角色游戏中的人物初始化模块代码实例,通过具体的内容向大家展示,希望对大家学习VC++编程技术有所帮助。

本文主要向大家介绍了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->MAX<d>FRAME</d>; 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_cur<d>Frame</d> = 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::Next<d>Frame</d>()
{
 // 本可以直接使用求余运算, 但是%求余运算速
 // 度及效率不好, 所以使用简单的判断操作代替
 //进入下一帧
 this->m_cur<d>Frame</d>++;
 if(this->m_cur<d>Frame</d> == this->MAX<d>FRAME</d>)
 this->m_cur<d>Frame</d> = 0;
}
//绘制人物
void CCharacter::StickCharacter(CDC& bufferDC)
{
 int i = this->m_cur<d>Frame</d>;
 //透明贴图
 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->MAX<d>FRAME</d>; i++)
 this->m_imgCharacter[i].Destroy();
}

   

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

#pragma once
#include<atlimage.h>
//地面高度
#define ELEVATION 42
class CCharacter
{
//静态常成员变量
private:
 //最大帧数:16
 static const int MAX<d>FRAME</d> = 16;
 //视口客户区宽度
 static const int VIEWWIDTH = 790;
 //视口客户区高度
 static const int VIEWHEIGHT = 568;
//成员变量
private:
 CImage m_imgCharacter[MAX<d>FRAME</d>];//人物
 CSize m_sCharacter;//人物大小
 CPoint m_leftTop;//人物的位置(左上角点)
 int m_cur<d>Frame</d>;//人物的当前帧
//成员函数
public:
 //初始化人物
 bool InitCharacter();
 //向前移动
 void MoveFront();
 //下一帧
 void Next<d>Frame</d>();
 //绘制人物(注:这里bufferDC是引用参数)
 void StickCharacter(CDC& bufferDC);
 //释放内存资源
 void ReleaseCharacter();
//构造与析构
public:
 CCharacter(void);
 ~CCharacter(void);
};

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言VC/MFC频道!

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程