在一个游戏中,通常会有很多怪物,以及怪物的生命值,魔法值等属性数据,这些数据不可能在代码里面写死,一般都会用配置文件来保存,使用时再加载到内存。
我们常用的配置文件是CSV文件,即逗号分隔值(Comma-Separated Values),如下图所示。
今天,我就来介绍一个来读取CSV文件的工具类——MyCsvUtil。
在接受读取CSV文件工具类之前,先介绍一个读取字符串的工具类——StringUtil。
//头文件StringUtil.h
#ifndef __StringUtil_H_
#define __StringUtil_H_
#include "cocos2d.h"
class StringUtil : public cocos2d::Ref
{
public:
static StringUtil * getInstance();
virtual bool init();
//用分隔符分割字符窜,结果存放到一个列表中,列表中的对象为Value
cocos2d::ValueVector split(const char * srcStr, const char * sSep);
private:
static StringUtil * m_StringUtil;//Util 是工具的意思!
};
//函数实现文件
#include "StringUtil.h"
USING_NS_CC;
//初始化
StringUtil * StringUtil::m_StringUtil = nullptr;
StringUtil * StringUtil::getInstance()
{
if (m_StringUtil == nullptr)
{
m_StringUtil = new StringUtil();
if (m_StringUtil && m_StringUtil->init() )
{
m_StringUtil->autorelease();
m_StringUtil->retain();
}
else
{
CC_SAFE_DELETE(m_StringUtil);
m_StringUtil = nullptr;
}
}
return m_StringUtil;
}
bool StringUtil::init()
{
////拆分字符串
//auto strsList = StringUtil::getInstance()->split("zhaolong,want,to,work!",",");
//for (auto str : strsList)
//{
// log("str = %s",str.asString().c_str());
//}
return true;
}
//分离函数,srcStr是要进行分离的字符串,sSep是分隔符 separator
ValueVector StringUtil::split(const char * srcStr, const char * sSep)
{
ValueVector stringList; //typedef std::vector<Value> ValueVector;
int size = strlen(srcStr);
//将数据转换为字符串