cocos2d-x开发: 一切应该从配置文件读取开始

来源:未知 责任编辑:责任编辑 发表时间:2015-03-01 01:33 点击:
想要做一款完整的游戏,应该从配置文件读取开始。cocos2d-x本身提供了UserDefault来操作xml格式的配置文件,准确的说配置这模块引擎开发者已经考虑到了.但是xml格式包含大量无关的格式信息,对于开发者直接使用编辑器操作也不是很友好.我期望的配置文件应该具备两个特点,第一:格式简单.这是我一贯的*nix风格的要求,我喜欢只管的#注释以及key-value的配置方式.可能唯一需要考虑的是这样简单的配置方式会不会因为业务扩展而显得功能不足.这一点是可以放心的,那些都是业务逻辑相关的,选择就会很多.至少现在不是应该考虑的范畴.第二:对开发者友好.什么叫做友好? 说白了,按照我的理解就是很容易可以定位配置信息的位置,容易修改,对编辑器依赖不高.我们随便用个notepad++/subl之类的文本编辑器就可以直接阅读和修改. p> 

p>好了,基于上面的考虑,ini格式无疑是比较好的选择.我最终选用了ini格式作为配置文件首选.所以就写了一个c++类来解析和操作ini配置.代码如下:

p> 

p> 

p> 1 #ifndef __xy_INICache_INCLUDE__

p> 2 #define __xy_INICache_INCLUDE__

p> 3 #include <map>

p> 4 #include <vector>

p> 5 #include <string>

p> 6 namespace xy

p> 7 {

p> 8     class INICache

p> 9     {

p>10     public:

p>11         INICache();

p>12         virtual ~INICache();

p>13         static INICache* createFromFile(const std::string& filePath);

p>14         static INICache* createFromStream(const std::stringstream& sstream);

p>15         bool loadFromFile(const std::string& filePath);

p>16         bool loadFromStream(const std::stringstream& sstream);

p>17         void flush(const std::string& filePath);

p>18         std::string getFilePath() const { return this->M_filePath_; }

p>19         bool isSectionExist(const std::string& section) const;

p>20         bool deleteSection(const std::string& section);

p>21         void getSectionNames(std::vector<std::string>& sectionVector);

p>22         void setString(const std::string& section, const std::string& key, const std::string& value);

p>23         std::string getString(const std::string& section, const std::string& key, const std::string& defaultValue);

p>24         void setInteger(const std::string& section, const std::string& key, int value);

p>25         int getInteger(const std::string& section, const std::string& key, int defaultValue);

p>26         void setDouble(const std::string& section, const std::string& key, double value, int pre);

p>27         double getDouble(const std::string& section, const std::string& key, double defaultValue);

p>28         void setBoolean(const std::string& section, const std::string& key, bool value);
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • cocos2d-x学习笔记(19)--label 、label atlas
  • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
  • Cocos2d-x 2.0 之 Actions “三板斧” 之一
  • Cocos2d-x学习(一):HelloWorld
  • cocos2d-x学习笔记(18)--游戏打包(windows平台)
  • cocos2d 设置屏幕默认方向
  •  Cocos2d-x初学指南(5): Tiled Map的使用(视角移动,碰撞检测)
  • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
  • cocos2d-x学习笔记(15)--地图的使用(TMX)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索 - 移动版 - 返回顶部
Copyright © 2008-2013 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1