cocos2dx3.2开发 RPG《Flighting》(十五)最后的总结说明,以及源码分享

cocos2dx3.2开发 RPG《Flighting》(十五)最后的总结说明,以及源码分享,第1张

概述一、前言 这次的Flighting系列教程一口气写了2天,到这里就要结束了。接下来我说明补充一下一些前面没有提到,但是我觉得有必要讲一下的。 二、正文 1.怪物的出场 前面已经说了一个个的XXXMessageUtil,其实StateMessageUtil是比较特别的。首先我们先看看StateMessage的Excel表(关卡) 前面的字段大家可以参透参透,我主要讲一讲monster字段 monst

一、前言

这次的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

邮箱地址:[email protected]

如有问题或指教,欢迎与我交流,谢谢。

总结

以上是内存溢出为你收集整理的cocos2dx3.2开发 RPG《Flighting》(十五)最后的总结说明,以及源码分享全部内容,希望文章能够帮你解决cocos2dx3.2开发 RPG《Flighting》(十五)最后的总结说明,以及源码分享所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1031105.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存