원글 출처 : 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); }
실행 결과
없앤만큼 내려옵니다.