cocos2d-x 공부용2014. 9. 15. 13:48

원글 출처 : http://horns.tistory.com/12


코인을 없애고 어떻게 위의 코인을 아래로 내려 배치할 것인가에 대한 구상입니다.

여기선 생략합니다.




원글 출처 : http://horns.tistory.com/13


-9- 코인을 사라지게 하자


1. 사라질 코인을 위로 보내기


HelloWorldScene.h

class HelloWorld : public cocos2d::Layer
{
...
public:
...
    void moveUpDeadCoin();
    void changeCoin(int index1, int index2);
};

HelloWorldScene.cpp

void HelloWorld::onTouchEnded(Touch* touch, Event* event) {
	auto target = event->getCurrentTarget();
	Point location = target->convertToNodeSpace(touch->getLocation());

	clearSelectCoin();
	moveUpDeadCoin();
}

void HelloWorld::moveUpDeadCoin(){
	int deadCoinNum = 0;
	int bottomPos = 0;
	GameCoin* coin;

	for(int x=0; x< BOARD_X; x++){
		bottomPos=((x+1)*BOARD_Y)-1;
		deadCoinNum = 0;

		for(int y=bottomPos; y>bottomPos-BOARD_Y; y--){
			coin = (GameCoin*)_gameCoins->objectAtIndex(y);
			if(coin->getState() == GameCoin::DEAD){
				deadCoinNum++;
				continue;
			}
			if(deadCoinNum>0){
				changeCoin(y,y+deadCoinNum);
			}
		}
	}
}

void HelloWorld::changeCoin(int index1, int index2){
	Point tmpPos;
	GameCoin* tmpCoin1 = (GameCoin*)_gameCoins->objectAtIndex(index1);
	GameCoin* tmpCoin2 = (GameCoin*)_gameCoins->objectAtIndex(index2);

	tmpPos = tmpCoin2->getPosition();
	tmpCoin2->setPosition(tmpCoin1->getPosition());
	tmpCoin1->setPosition(tmpPos);

	_gameCoins->exchangeObjectAtIndex(index1, index2);
}

실행 결과


 

없앤만큼 내려옵니다.




Posted by 아이시네프