cocos植物大战僵尸(六)已选植物卡片管理器类

2.4.3 已选植物卡片管理器类

 

这个类用来管理已经选择的植物卡片。即待选面板中点了一张,左侧增加一张。点击左侧,则又恢复到待选面板中。

待选面板点中一张,发送通知,传递点中植物卡片名字。已选管理器中创建一张植物开片,并加入到已选的植物卡片容器中。

void CHaveChooseCardMgr::addHaveCard(std::string sName)
{
	int iSize = m_listHaveCard.size();
	int iYpos = HAVE_INIT_Y - iSize*HAVE_Y_CNT;//纵坐标为递减
	CWaitChooseCard *waitCard = CWaitChooseCard::create();//新建一个卡片
	waitCard->setsName(sName);//传入的名字为新建卡片的名字
	waitCard->createByName(sName);//卡片根据对象名字从卡片缓冲池装载图片
	waitCard->setposCard(Point(HAVE_INIT_X, iYpos));
	waitCard->setPosition(Point(HAVE_INIT_X, iYpos));
	//CGlobalComm::getInstance()->getgameMapLayer()->addChild(waitCard,LAYER_SECOND);
	this->addChild(waitCard, LAYER_SECOND);
	m_listHaveCard.pushBack(waitCard);
}

当在已选管理器中点中一张卡片,做以下几件事:1.剩下的卡片依次移动位置;2.发送删除这个已选卡片的通知给待选面板;3.从已选容器中删除;4.父节点删除这个卡片。

int iCardPosInList = 0; //当前点击卡片在列表中的位置
			Vector<CWaitChooseCard*>::iterator itCard = m_listHaveCard.find(clickCard);//迭代器返回找到的索引
			if (itCard != m_listHaveCard.end())//如果迭代器不是指向末尾,说明寻找成功
			{
				iCardPosInList = std::distance(m_listHaveCard.begin(), itCard);//得到位置是以0开始的位置
			}
			int iSize = m_listHaveCard.size();
			//CGlobalComm::getInstance()->getobjWaitCard()->cardReset(clickCard->getsName());
			NOTIFY->postNotification(NOTIFY_ReduceChooseCard, (Ref*)((clickCard->getsName()).c_str()));
			for (int i = iSize - 1; i > iCardPosInList; i--)
			{
				m_listHaveCard.at(i)->setposCard(m_listHaveCard.at(i - 1)->getposCard());
				m_listHaveCard.at(i)->setPosition(m_listHaveCard.at(i - 1)->getposCard());
			}
			//m_listHaveCard.at(0)->setPosition(Point(HAVE_INIT_X,100));

			m_listHaveCard.eraseObject(clickCard);
			clickCard->removeFromParentAndCleanup(true);
			haveChooseReduce();

实现效果

cocos植物大战僵尸是一款由开发者使用cocos2d-x3.17版本开发的游戏。游戏具有策略性,背景是僵尸入侵玩家的家,玩家需要通过放置具有攻击性的植物来抵御僵尸的入侵。游戏的目标是从第一关开始,选择左上角的卡片放置豌豆射手,用豌豆射手来防御僵尸。游戏结束的条件是僵尸被打死或者僵尸越过屋子。通关后,玩家可以获得卡片,并收集植物卡片来打倒僵尸。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [植物大战僵尸.rar](https://download.csdn.net/download/yx______/12070735)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [植物大战僵尸破产版--cocos studio](https://blog.csdn.net/weixin_46008509/article/details/107088661)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Cocos2d-x简单游戏<植物大战僵尸>代码实现|第九部分:游戏场景GameScene.cpp<后续会提供源码下载链接>](https://blog.csdn.net/u011286702/article/details/21400589)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四夕立羽

你的鼓励将是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值