当前位置: 首页 > news >正文

肯德基网站是哪家公司做的如何设计微商城网站建设

肯德基网站是哪家公司做的,如何设计微商城网站建设,面备案网站建设,网站屏幕自适应代码植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/xjvbb 打开LevelData.h和LevelData.cpp文件。文件位置如下图所示。 LevelData.h 此头文件中定义了两个类#xff0c;分别是OpenLevelData、LevelData#xff0c;其中OpenLevelData用于加载文件数据。LevelData解析数据…植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/xjvbb  打开LevelData.h和LevelData.cpp文件。文件位置如下图所示。 LevelData.h 此头文件中定义了两个类分别是OpenLevelData、LevelData其中OpenLevelData用于加载文件数据。LevelData解析数据将数据保存到数据结构中。 #pragma once #include cocos2d.h #include json/writer.h #include json/document.h #include json/stringbuffer.husing namespace std; using namespace cocos2d; using namespace rapidjson;class LevelData;class OpenLevelData { public:/***单例*/static OpenLevelData* getInstance();/***打开关卡数据*/bool openLevelsData(const string worlddata);/**解密关卡数据*/void decrypt(char* cSrc, char* cDest);void decrypt(string cSrc, char* cDest);/***获取所有关卡数据*/Document* getDocument();/***创建某一个关卡数据*/void createLevelData(const int level, const char* levelName);/***读取某一个关卡*/LevelData* readLevelData(const int level);/***设置关卡数*/void setLevelNumber(const int levelNumber);/***获取关卡数*/int getLevelNumber() const;/**初始化*/void documentInit();private:OpenLevelData():_document(new Document), _levelNumber(-1){}~OpenLevelData() {}private:static OpenLevelData* _instance;Document* _document;mapint, LevelData*_levelData;int _levelNumber; };struct MyPoint {MyPoint():x(0),y(0){}int x, y; };class LevelData { public:bool readLevelData(const char* LevelName);bool getZombiesVisible() const { return _zombiesIsVisible; }bool getZombiesIsSmall() const { return _zombiesIsSmall; }bool getZombiesIsBig() const { return _zombiesIsBig; }bool getIsNoPlants() const { return _isNoPlants; }int getZombiesFrequency() const { return _zombiesFrequency; }int getCoinNumbers() const { return _coinNumbers; }int getAtLeastSunNumbers() const { return _atLeastSunNumbers; }int getFlowerPosition() const { return _flowerPosition; }int getCarNumbers() const { return _carNumbers; }int getUsePlantsNumbers() const { return _usePlantsNumbers; }int getFirstFrequencyTime() const { return _firstFrequencyTime; }float getUserLostPosition() const { return _userLose; }vectorint getGameType() { return _gameType; }vectorint getZombiesType() { return _zombiesType; }vectorint getZombiesNumbers() { return _zombiesNumbers; }vectorint getMunchZombiesFrequency() { return _munchZombiesFrequency; }vectorMyPoint getNoPlantsPosition() { return _noPlantsPosition; }vectorvectorint getZombiesTypeProbabilityFrequency() { return _zombiesTypeProbabilityFrequency; }CC_CONSTRUCTOR_ACCESS:LevelData();~LevelData();private:void setGameTypes(const char* LevelName);private:bool _isEncryption; /* 是否加密 */bool _zombiesIsVisible; /* 僵尸是否隐身 */bool _zombiesIsSmall; /* 是否是小僵尸 */bool _zombiesIsBig; /* 是否是巨人僵尸 */bool _isNoPlants; /* 是否不可种植 */int _zombiesFrequency; /* 僵尸总波数 */int _coinNumbers; /* 金币数 */int _atLeastSunNumbers; /* 至少产生的阳光数 */int _flowerPosition; /* 花坛位置 */int _carNumbers; /* 小车数量 */int _usePlantsNumbers; /* 使用植物数量 */int _firstFrequencyTime; /* 第一波僵尸出现时间 */float _userLose; /* 玩家失败 */vectorint_gameType; /* 游戏类型 */vectorint_zombiesType; /* 僵尸类型 */vectorint_zombiesNumbers; /* 僵尸数 */vectorint_munchZombiesFrequency; /* 多僵尸波数 */vectorvectorint _zombiesTypeProbabilityFrequency; /* 每一波每种僵尸出现的概率 */vectorMyPoint_noPlantsPosition; /* 不可以种植的地方 */Document* _document; }; LevelData.cpp getInstance()函数 OpenLevelData使用了单例模式这样保证了只会创建唯一的一个实例。该实例会使用map数据结构保存所有关卡数据。 mapint, LevelData*_levelData; OpenLevelData* OpenLevelData::getInstance() {if (_instance nullptr){_instance new (std::nothrow)OpenLevelData;}return _instance; } openLevelsData()函数 函数有一个参数表示要加载的文件名称。使用Cocos2d-x中FileUtils类加载磁盘文件中的数据函数返回字符串类型数据。 由于该文件存在加密所以首先对字符串数据进行解密然后使用RapidJson库来解析json字符串数据。如果解析失败返回false,解析成功返回true。 bool OpenLevelData::openLevelsData(const string worlddata) {char* passWords;string str FileUtils::getInstance()-getStringFromFile(worlddata);passWords (char*)malloc(sizeof(char) * str.size());/* 解密 */decrypt(str, passWords);documentInit();_document-Parserapidjson::kParseDefaultFlags(passWords);free(passWords);if (_document-HasParseError())return false;return true; } decrypt()函数 函数有两个参数第一个参数表示要解密的字符串第二个参数表示解密后的字符串。通过逐个遍历字符进行字符串解密其算法如下代码所示。 void OpenLevelData::decrypt(string cSrc, char* cDest) {int i, h, l, m, n, j 0;for (i 0; i static_castint(cSrc.size()); i i 2){h (cSrc[i] - x);l (cSrc[i 1] - z);m (h 4);n (l 0xf);cDest[j] m n;j;}cDest[j] \0; } createLevelData()函数 函数有两个参数第一参数表示关卡编号用作map中的key值当需要获取某一关卡数据时只需要根据key值就可以获取相关数据。第二参数是关卡名称根据关卡名称获取文件中的关卡数据。 void OpenLevelData::createLevelData(const int level, const char* levelName) {/* map中如果没有关卡数据 */if (!_levelData.count(level)){LevelData* levelData new LevelData;levelData-readLevelData(levelName);_levelData.insert(pairint, LevelData*(level, levelData));} } 这个函数功能是解析某一关卡数据并将其保存的map数据结构中。首先判断map数据结构中是否已经存在该关卡数据如果不存在则使用LevelData类中的readLevelData()函数解析文件中该关卡的数据然后将其保存到map数据结构中供后续使用。 readLevelData()函数 函数有一个参数表示关卡名称函数根据关卡名称来解析json文件。 bool LevelData::readLevelData(const char* LevelName) {_document OpenLevelData::getInstance()-getDocument();if (_document-HasMember(LevelName)){_isEncryption (*_document)[LevelName][IsEncryption].GetBool();_coinNumbers (*_document)[LevelName][CoinNumbers].GetInt();_zombiesFrequency (*_document)[LevelName][Frequency].GetInt();_firstFrequencyTime (*_document)[LevelName][FirstFrequencyTime].GetInt();_userLose (*_document)[LevelName][UserLose].GetFloat();for (unsigned int i 0; i (*_document)[LevelName][GameType].Size(); i){_gameType.push_back((*_document)[LevelName][GameType][i].GetInt());}for (unsigned int i 0; i (*_document)[LevelName][ZombiesType].Size(); i){_zombiesType.push_back((*_document)[LevelName][ZombiesType][i].GetInt());}for (unsigned int i 0; i (*_document)[LevelName][MunchZombiesFrequency].Size(); i){_munchZombiesFrequency.push_back((*_document)[LevelName][MunchZombiesFrequency][i].GetInt());}for (unsigned int i 0; i (*_document)[LevelName][ZombiesNumbers].Size(); i){_zombiesNumbers.push_back((*_document)[LevelName][ZombiesNumbers][i].GetInt());}vectorint v;for (unsigned int i 0; i (*_document)[LevelName][ZombiesTypeProbability].Size(); i){v.clear();for (unsigned int j 0; j (*_document)[LevelName][ZombiesTypeProbability][i].Size(); j){v.push_back((*_document)[LevelName][ZombiesTypeProbability][i][j].GetInt());}_zombiesTypeProbabilityFrequency.push_back(v);}setGameTypes(LevelName);return true;}return false; }函数首先判断json文件中是否存在以形参变量命名的关卡名称如果有则进行数据解析最后返回true表示解析成功,否则返回false表示解析失败。 setGameTypes()函数 函数有一个参数表示关卡名称函数根据关卡名称来解析json文件。 void LevelData::setGameTypes(const char* LevelName) {for (unsigned int i 0; i _gameType.size(); i){switch (static_castGameTypes(_gameType.at(i))){case GameTypes::AtLeastSunNumbers:_atLeastSunNumbers (*_document)[LevelName][AtLeastSunNumbers].GetInt();break;case GameTypes::FlowerPosition:_flowerPosition 570 122 * (*_document)[LevelName][FlowerPosition].GetInt();break;case GameTypes::CarNumbers:_carNumbers (*_document)[LevelName][CarNumbers].GetInt();break;case GameTypes::UserPlantsNumbers:_usePlantsNumbers (*_document)[LevelName][UserPlantsNumbers].GetInt();break;case GameTypes::ZombiesInvisible:_zombiesIsVisible true;break;case GameTypes::SmallZombies:_zombiesIsSmall true;break;case GameTypes::BigZombies:_zombiesIsBig true;break;case GameTypes::NoPlants:{_isNoPlants true;MyPoint MyPoint;for (unsigned int i 0; i (*_document)[LevelName][NoPlants].Size(); i){MyPoint.x (*_document)[LevelName][NoPlants][i][0].GetInt();MyPoint.y (*_document)[LevelName][NoPlants][i][1].GetInt();_noPlantsPosition.push_back(MyPoint);}}break;}} } 函数根据不同的游戏类型解析不同的数据使用switch case语句来判断不同的游戏类型。  其他函数 其他函数就不一一介绍了可以自行查看阅读代码。 后续 后续将讲解游戏多语言切换功能的实现。
http://www.eeditor.cn/news/126012/

相关文章:

  • 美食网站首页设计室内设计培训课程
  • 精品网站建设公司html代码大全及详解
  • 设计网站推荐提升审美高校网站一般采用什么网页布局
  • 国内装饰行业网站开发国内免费可商用图片素材网站
  • 丹阳网站建设要多少钱黑龙江省机场建设集团官网网站
  • 响应式网站制作教程网站开发区
  • 网站集约化建设调研报告校园学生网站开发
  • 贵金属网站源码购买腾讯云 做网站
  • 七台河北京网站建设专业网站模仿
  • 三水区网站建设大沥南庄网站建设
  • 网站开发pc端和手机端赣州市官网
  • 手机网站主页推荐建立网站的必要性
  • 建站系统和构建系统建站中心
  • 威海网站制作怎么样滨州区建设局网站
  • 单页面网站做百度推广效果榆中县城乡建设局网站
  • 济宁哪里有做网站的本地wordpress数据
  • 地图网站怎么做常德小程序开发公司
  • 北京做企业网站的公司广州企业网站建设电话
  • 中国最大的建材网站专业网专业网站建设
  • 厦门网站制作策划找人做设计的网站
  • 东莞市品牌网站建设价格企业网站建设网页设计
  • 青岛建站通php 开启gzip加速网站
  • 网站建设部门公司做网站需要注意什么事情
  • 施工程找工程做哪个网站好世界500强企业市值排名
  • 石家庄品牌网站建设手机网站源码教程
  • 网站开发技术与功能 需求说明网站建设经费的函
  • 自己的域名搭建网站东莞外贸推广公司
  • 百度推广网站建设威海网架公司
  • 江苏建设信息网站有时候打不开学生网站建设实训总结
  • 电子商务网站建设的四个步骤wordpress 产品相册插件