cocos2dx3.2开发 RPG《Flighting》(十五)最后的总结说明,以及源码分享
2015-01-11 15:23
417 查看
一、前言
这次的Flighting系列教程一口气写了2天,到这里就要结束了。接下来我说明补充一下一些前面没有提到,但是我觉得有必要讲一下的。
二、正文
1.怪物的出场
前面已经说了一个个的XXXMessageUtil,其实StateMessageUtil是比较特别的。首先我们先看看StateMessage的Excel表(关卡)
前面的字段大家可以参透参透,我主要讲一讲monster字段
monster字段表示这个关卡的怪物对队列,用“|”隔开
可以看到,我们的StageMessage也相应的有一个队列monsterDeq
得到队列以后,我们在FlightLayer里面可以检测现在有多少个怪物,如果少于规定个数(我这里是4个),就出来一个
2.源码分享
源码下载地址:点击打开链接
我在上传之前在VS2012+cocos2dx3.2平台下运行成功。
3.已经打包好的apk
上次消灭星星大家说移植到Android平台有问题,这次我特意也移植了,android平台是可以运行的。
APK下载地址:点击打开链接
至此,整个Cocos2dx 3.2开发RPG《Flighting》系列到此结束,谢谢大家。
我的csdn地址:http://blog.csdn.net/hezijian22
邮箱地址:578690286@qq.com
如有问题或指教,欢迎与我交流,谢谢。
这次的Flighting系列教程一口气写了2天,到这里就要结束了。接下来我说明补充一下一些前面没有提到,但是我觉得有必要讲一下的。
二、正文
1.怪物的出场
前面已经说了一个个的XXXMessageUtil,其实StateMessageUtil是比较特别的。首先我们先看看StateMessage的Excel表(关卡)
前面的字段大家可以参透参透,我主要讲一讲monster字段
monster字段表示这个关卡的怪物对队列,用“|”隔开
class StageMessage{ public: int id; string name; int reward_money; int reward_exp; int boss; string reward_item; deque<MonsterMessage> monsterDeq; };
可以看到,我们的StageMessage也相应的有一个队列monsterDeq
void StageMessageUtil::init(){ std::string jsonStr = cocos2d::FileUtils::getInstance()->getStringFromFile("Json/StageMessage.json"); rapidjson::Document _mDoc; std::string mstr = jsonStr; RETURN_IF(NULL==mstr.c_str()||!mstr.compare("")); _mDoc.Parse<0>(mstr.c_str()); RETURN_IF(_mDoc.HasParseError()||!_mDoc.IsObject()); const rapidjson::Value &pArr = _mDoc["json"]; CCLOG("Size = %d",pArr.Capacity()); for(int i=0;i<pArr.Capacity();++i){ StageMessage stage; const rapidjson::Value &temp = pArr[i]; int key = temp["id"].GetInt(); stage.id = temp["id"].GetInt(); stage.name = temp["name"].GetString(); stage.boss = temp["boss"].GetInt(); stage.reward_money = temp["reward_money"].GetInt(); stage.reward_exp = temp["reward_exp"].GetInt(); stage.reward_item = temp["reward_item"].GetString(); //这里开始初始化队列 string monsterStr = temp["monster"].GetString(); char c[64]; strcpy(c,monsterStr.c_str()); char* s = strtok(c,"|"); while(s != NULL){ int id_num; stringstream ss; ss << s; ss >> id_num; CCLOG("GET ID:%d",id_num); MonsterMessage msg = MonsterMessageUtil::getInstance()->getMessageById(id_num); stage.monsterDeq.push_back(msg); s = strtok(NULL,"|"); } CCLOG("DEQ SIZE = %d",stage.monsterDeq.size()); stageMap.insert(make_pair(key,stage)); } CCLOG("STAGE MAP SIZE = %d",stageMap.size()); return; }初始化怪物队列的工作在代码标注的哪里开始
得到队列以后,我们在FlightLayer里面可以检测现在有多少个怪物,如果少于规定个数(我这里是4个),就出来一个
void FlightLayer::updateMonster(){ int count = 0; for(auto it=m_rolesArray.begin();it!=m_rolesArray.end();++it){ if((**it)->getRoleType() == Role::ROLE_TYPE_MONSTER){ ++count; } } if(count < 4){ if(m_monsterDeq.size() == 0){ return; } MonsterMessage msg = *m_monsterDeq.begin(); m_monsterDeq.pop_front(); Monster* monster = Monster::create(msg.r_name,this); monster->initWithMessage(msg); monster->setPosition(2000,260); this->addRole(monster); CCLOG("ADD MONSTER:%s TO LAYER",msg.name.c_str()); } return; }
2.源码分享
源码下载地址:点击打开链接
我在上传之前在VS2012+cocos2dx3.2平台下运行成功。
3.已经打包好的apk
上次消灭星星大家说移植到Android平台有问题,这次我特意也移植了,android平台是可以运行的。
APK下载地址:点击打开链接
至此,整个Cocos2dx 3.2开发RPG《Flighting》系列到此结束,谢谢大家。
我的csdn地址:http://blog.csdn.net/hezijian22
邮箱地址:578690286@qq.com
如有问题或指教,欢迎与我交流,谢谢。
相关文章推荐
- cocos2dx3.2开发 RPG《Flighting》(十三)让英雄炫酷点—技能以及技能效果
- cocos2dx3.2开发 RPG《Flighting》(二)骨骼动画介绍及游戏美术资源分享
- 利用cocos2dx 3.2开发消灭星星(十)为游戏添加音效(项目源码分享)
- cocos2dx3.2开发 RPG《Flighting》(五)只能行走的战斗场景
- cocos2dx3.2开发 RPG《Flighting》(一)基本介绍
- cocos2dx3.2开发 RPG《Flighting》(三)从Excel表中加载需要的数据
- cocos2dx3.2开发 RPG《Flighting》(十一)角色分类——英雄与怪物
- cocos2dx3.2开发 RPG《Flighting》(七)回到战斗场景,更新角色的叠放次序
- cocos2dx3.2开发 RPG《Flighting》(四)预先加载与选人界面
- cocos2dx3.2开发 RPG《Flighting》(九)必不可少的子弹
- cocos2dx3.2开发 RPG《Flighting》(十)为角色加上血量条
- cocos2dx3.2开发 RPG《Flighting》(十四)暂停按钮
- cocos2dx3.2开发 RPG《Flighting》(八)开始战斗
- cocos2dx3.2开发 RPG《Flighting》(六)角色的状态和控制效果
- cocos2dx3.2开发 RPG《Flighting》
- cocos2dx3.2开发 RPG《Flighting》(十二)让怪物智能点——怪物仇恨值
- [分享]错误“应用程序Xcode的这个版本不能与此版本的OS X配合使用”以及Mac源码和IOS开发资料分享
- iOS开发资源分享:UIKit关键帧动画框架Jazz Hands、MTLog、Pocket Weather源码以及其他
- 总结FFmpeg官方源码以及第三方拿来进行二次开发的开源源码地址
- 开发中总结的各种源码,给大家分享