华容道开发02---角色类的设计与数据读取

华容道开发02---角色类的设计与数据读取,第1张

概述游戏中会出现的角色有曹 *** ,将军(赵云等),兵三种类型,但是,将军有多种贴图,而且,将军还有横竖之分。 属性: ID id   贴图 image_name   类型 type 四种类型 boss,曹 *** general_hor将军横向, general_ver,将军竖向 soldier士兵 宽度 width 横向占的格子数 高度 height 竖向占的格子数  xml文档截图: 代码: Role.h

游戏中会出现的角色有曹 *** ,将军(赵云等),兵三种类型,但是,将军有多种贴图,而且,将军还有横竖之分。

属性:

ID ID
贴图 image_name
类型 type

四种类型

boss,曹 ***

general_hor将军横向,

general_ver,将军竖向

soldIEr士兵
宽度 wIDth 横向占的格子数
高度 height 竖向占的格子数


xml文档截图:

代码:

Role.h

#ifndef _RolE_H_#define _RolE_H_#include "cocos2d.h"#include "tinyxml2/tinyxml2.h"#define  IF_NulL_RETURN_FALSE(_x_) if(_x_ == nullptr) return false using namespace tinyxml2 ;USING_NS_CC ;typedef enum {	kRoleTypeNone = 0,kRoleTypeBoss,//<曹 *** 	kRoleTypeArmyGeneralHorizontal,//<横向的将军	kRoleTypeArmyGeneralVertical,//<竖直的将军	kRoleTypeSoldIEr,//<士兵}RoleType;class Role : public Ref{public:	static  cocos2d::Vector<Role*> s_roleVec ;	static const char * XML_file_name ;	static bool initStatic();	static bool parseData(XMLElement * pElement) ;	static voID finalizeStatic();public:	Role();	~Role();	bool init(XMLElement * pElement);	RoleType getTypeByChar(const char * pType);private:	CC_SYNTHESIZE_Readonly(int,m_ID,ID) ;	CC_SYNTHESIZE_Readonly(int,m_wIDth,WIDth) ;	CC_SYNTHESIZE_Readonly(int,m_height,Height) ;	CC_SYNTHESIZE_Readonly(RoleType,m_type,Type);	CC_SYNTHESIZE_Readonly(cocos2d::__String *,m_pImagename,Imagename) ;};#endif

Role.cpp

#include "Role.h"const char * Role::XML_file_name = "roles.xml" ;Vector<Role*> Role::s_roleVec ;bool Role::initStatic(){	std::string filePath = fileUtils::getInstance()->fullPathForfilename(XML_file_name) ;	tinyxml2::XMLdocument pDoc;	fileUtils::getInstance()->setPopupNotify(false) ;	ssize_t fileSize = 0 ;	std::string data = fileUtils::getInstance()->getStringFromfile(filePath.c_str()); 	fileUtils::getInstance()->setPopupNotify(true) ;	pDoc.Parse(data.c_str()) ;	XMLElement * pEle = pDoc.RootElement() ;	return parseData(pEle) ;}bool Role::parseData(XMLElement * pElement){	s_roleVec.clear() ;	XMLElement * child = pElement->FirstChildElement() ;	for (;child;child = child->NextSiblingElement())	{		if (strcmp(child->Value(),"role") == 0)		{			Role * pRol = new Role() ;			if (!pRol->init(child))			{				CC_SAFE_RELEASE_NulL(pRol); 				return false ;			}			s_roleVec.pushBack(pRol) ;			pRol->release() ;		}	}	return true ;}voID Role::finalizeStatic(){	s_roleVec.clear() ;}Role::Role()	:m_ID(-1),m_pImagename(nullptr),m_type(kRoleTypeNone),m_wIDth(0),m_height(0){}Role::~Role(){	CC_SAFE_RELEASE_NulL(m_pImagename) ;}bool Role::init(XMLElement * pElement){	const char * pID = pElement->Attribute("ID") ;	IF_NulL_RETURN_FALSE(pID) ;	m_ID = atoi(pID) ;	const char * pImagename = pElement->Attribute("image_name") ;	IF_NulL_RETURN_FALSE(pImagename) ;	m_pImagename = new __String(pImagename) ;	const char* pType = pElement->Attribute("type") ;	IF_NulL_RETURN_FALSE(pType);	m_type = getTypeByChar(pType) ;	const char * pWIDth = pElement->Attribute("wIDth") ;	IF_NulL_RETURN_FALSE(pWIDth);	m_wIDth = atoi(pWIDth); 		const char * pHeight = pElement->Attribute("height") ;	IF_NulL_RETURN_FALSE(pHeight);	m_height = atoi(pHeight); 	log("Role:%d----%d-----%d",m_height);	return true;}RoleType Role::getTypeByChar(const char * pType){	if (strcmp("boss",pType) == 0)	{		return kRoleTypeBoss ;	}	else if (strcmp("soldIEr",pType) == 0)	{		return kRoleTypeSoldIEr ;	}	else if (strcmp("general_ver",pType) == 0)	{		return kRoleTypeArmyGeneralVertical;	}	else if (strcmp("general_hor",pType) == 0)	{		return kRoleTypeArmyGeneralHorizontal;	}	return kRoleTypeNone ;}
总结

以上是内存溢出为你收集整理的华容道开发02---角色类的设计与数据读取全部内容,希望文章能够帮你解决华容道开发02---角色类的设计与数据读取所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1054820.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存