游戏中会出现的角色有曹 *** ,将军(赵云等),兵三种类型,但是,将军有多种贴图,而且,将军还有横竖之分。
属性:
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---角色类的设计与数据读取所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)