码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-04-14 21:36:18      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:cocos2d-x3.4   游戏   华容道   

角色类设计:

曹操:4个格子

将军_横:2

将军_:2

兵:1

 

 

将角色分为12种,因为,其中10种是将军,横向的5种,竖向的5种,1种兵,1Boss

 

角色属性:

ID

Type

贴图:

 

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(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 ;

boolRole::initStatic()

{

std::stringfilePath = FileUtils::getInstance()->fullPathForFilename(XML_FILE_NAME) ;

 

tinyxml2::XMLDocumentpDoc;

 

FileUtils::getInstance()->setPopupNotify(false);

ssize_tfileSize = 0 ;

std::stringdata = FileUtils::getInstance()->getStringFromFile(filePath.c_str()); 

FileUtils::getInstance()->setPopupNotify(true);

 

pDoc.Parse(data.c_str());

 

XMLElement* pEle = pDoc.RootElement() ;

 

returnparseData(pEle) ;

}

 

boolRole::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);

returnfalse ;

}

s_roleVec.pushBack(pRol);

pRol->release();

}

}

 

returntrue ;

}

 

voidRole::finalizeStatic()

{

s_roleVec.clear();

}

Role::Role()

:m_id(-1)

,m_pImageName(nullptr)

,m_type(kRoleTypeNone)

{

 

}

 

Role::~Role()

{

CC_SAFE_RELEASE_NULL(m_pImageName);

}

 

boolRole::init(XMLElement * pElement)

{

constchar * pId = pElement->Attribute("id") ;

IF_NULL_RETURN_FALSE(pId);

m_id= atoi(pId) ;

 

constchar * pImageName = pElement->Attribute("image_name") ;

IF_NULL_RETURN_FALSE(pImageName);

m_pImageName= new __String(pImageName) ;

 

constchar* pType = pElement->Attribute("type") ;

IF_NULL_RETURN_FALSE(pType);

m_type= getTypeByChar(pType) ;

 

log("Role:%d",m_id);

returntrue;

}

 

RoleTypeRole::getTypeByChar(const char * pType)

{

if(strcmp("boss",pType) == 0)

{

returnkRoleTypeBoss ;

}

elseif (strcmp("soldier",pType) == 0)

{

returnkRoleTypeSoldier ;

}

elseif (strcmp("general_ver",pType) == 0)

{

returnkRoleTypeArmyGeneralVertical;

}

elseif (strcmp("general_hor",pType) == 0)

{

returnkRoleTypeArmyGeneralHorizontal;

}

 

returnkRoleTypeNone ;

}

 


 

 

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

标签:cocos2d-x3.4   游戏   华容道   

原文地址:http://blog.csdn.net/c_boy_lu/article/details/45047287

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!