void HelloWorld::spriteMoveFinished(CCNode* sender) { CCSprite *sprite = (CCSprite *)sender; this->removeChild(sprite, true); if (sprite->getTag() == 1) // target { _targets->removeObject(sprite); GameOverScene *gameOverScene = GameOverScene::create(); //gameOverScene->getLayer()->getLabel()->setString("You Lose :["); char buff[256]; //スコア文字列 sprintf(buff,"HISCORE: %05d\n SCORE: %05d",_hiScore, _score); saveHIScore(_score); gameOverScene->getLayer()->getLabel()->setString(buff); //gameOverScene->getLayer()->getLabel()->setString(label_buff); CCDirector::sharedDirector()->replaceScene(gameOverScene); } else if (sprite->getTag() == 2) // projectile { _projectiles->removeObject(sprite); } }
void HelloWorld::updateGame(float dt) { if ( _snake->getLength() > 50 ) { GameOverScene *gameOverScene = GameOverScene::create(); gameOverScene->getLayer()->getLabel()->setString("You Win!"); CCDirector::sharedDirector()->replaceScene(gameOverScene); } return; }
void HelloWorld::spriteMoveFinished(CCNode *sender) { CCSize winSize = CCDirector::sharedDirector()->getWinSize(); CCSprite *sprite = (CCSprite*)sender; //this->removeChild(sprite,true); if(sprite->getTag() == 1) { arrayTarget->removeObject(sprite); GameOverScene *scene = GameOverScene::create(); scene->getLayer()->getLabel()->setString("AGAIN"); CCSprite *gameover = CCSprite::create("gameover.png"); gameover->setScale(0.3); gameover->setPosition(ccp(winSize.width/2,winSize.height/2)); scene->getLayer()->getGameover()->addChild(gameover); CCDirector::sharedDirector()->replaceScene(CCTransitionFlipX::transitionWithDuration(0.5, scene)); } else if(sprite->getTag() == 2) { arrayProjectile->removeObject(sprite); } }
// for (jt = targetsToDelete->begin(); jt != targetsToDelete->end(); jt++) CCARRAY_FOREACH(targetsToDelete, jt) { CCSprite *target = dynamic_cast<CCSprite*>(jt); _targets->removeObject(target); this->removeChild(target, true); _projectilesDestroyed++; if (_projectilesDestroyed >= 5) { GameOverScene *gameOverScene = GameOverScene::create(); gameOverScene->getLayer()->getLabel()->setString("You Win!"); CCDirector::sharedDirector()->replaceScene(gameOverScene); } }
void SceneController::increaseKillCount() { int nProjectilesDestroyed = ((CCComAttribute*)(m_pOwner->getComponent("CCComAttribute")))->getInt("KillCount"); CCComAttribute *p = (CCComAttribute*)(m_pOwner->getComponent("CCComAttribute")); p->setInt("KillCount", ++nProjectilesDestroyed); if (nProjectilesDestroyed >= 5) { GameOverScene *gameOverScene = GameOverScene::create(); gameOverScene->getLayer()->getLabel()->setString("You Win!"); CCDirector::sharedDirector()->replaceScene(gameOverScene); } }
// cpp with cocos2d-x void HelloWorld::spriteMoveFinished(CCNode* sender) { CCSprite *sprite = (CCSprite *)sender; this->removeChild(sprite, true); if (sprite->getTag() == 1) // target { _targets->removeObject(sprite); GameOverScene *gameOverScene = GameOverScene::create(); gameOverScene->getLayer()->getLabel()->setString("You Lose :["); CCDirector::sharedDirector()->replaceScene(gameOverScene); } else if (sprite->getTag() == 2) // projectile { _projectiles->removeObject(sprite); } }
void SceneController::spriteMoveFinished(Node* sender) { Sprite *sprite = (Sprite *)sender; _owner->removeChild(sprite, true); if (sprite->getTag() == 2) // target { _targets->removeObject(sprite); GameOverScene *gameOverScene = GameOverScene::create(); gameOverScene->getLayer()->getLabel()->setString("You Lose :["); Director::getInstance()->replaceScene(gameOverScene); } else if (sprite->getTag() == 3) { _projectiles->removeObject(sprite); } }
/** *action when target movedone */ void HelloWorld::spriteMoveFinished(CCNode* psender) { //remove sprite when target movefinish CCSprite* pSprite = (CCSprite*) psender; this->removeChild(pSprite, true); if(pSprite->getTag() == 1) { mtargets->removeObject(pSprite); GameOverScene *gameOverScene = GameOverScene::create(); gameOverScene->getLayer()->getLabel()->setString("You lose"); CCDirector::sharedDirector()->replaceScene(gameOverScene); } else if(pSprite->getTag() == 2) { mprojectiles->removeObject(pSprite); } }
// for (jt = targetsToDelete->begin(); jt != targetsToDelete->end(); jt++) CCARRAY_FOREACH(targetsToDelete, jt) { CCSprite *target = dynamic_cast<CCSprite*>(jt); _targets->removeObject(target); this->removeChild(target, true); _projectilesDestroyed++; CCLOG("_projectilesDestroyed = %d", _projectilesDestroyed); if (_projectilesDestroyed >= 10) { GameOverScene *gameOverScene = GameOverScene::create(); //gameOverScene->getLayer()->getLabel()->setString("You Win!"); char buff[256]; //スコア文字列 sprintf(buff,"HISCORE %05d\nSCORE %05d",_hiScore, _score); saveHIScore(_score); gameOverScene->getLayer()->getLabel()->setString(buff); CCDirector::sharedDirector()->replaceScene(gameOverScene); } }
void HelloWorld::update(float dt) { CCArray *projectilesToDelete = new CCArray; CCArray* targetsToDelete =new CCArray; CCObject* it = NULL; CCObject* jt = NULL; CCARRAY_FOREACH(_projectiles, it) { CCSprite *projectile = dynamic_cast<CCSprite*>(it); CCRect projectileRect = CCRectMake( projectile->getPosition().x - (projectile->getContentSize().width/2), projectile->getPosition().y - (projectile->getContentSize().height/2), projectile->getContentSize().width, projectile->getContentSize().height); CCARRAY_FOREACH(_targets, jt) { CCSprite *target = dynamic_cast<CCSprite*>(jt); CCRect targetRect = CCRectMake( target->getPosition().x - (target->getContentSize().width/2), target->getPosition().y - (target->getContentSize().height/2), target->getContentSize().width, target->getContentSize().height); if (projectileRect.intersectsRect(targetRect)) { targetsToDelete->addObject(target); projectilesToDelete->addObject(projectile); _projectilesDestroyed++; if (_projectilesDestroyed >= 5) { GameOverScene *gameOverScene = GameOverScene::create(); gameOverScene->getLayer()->getLabel()->setString("You Win!"); CCDirector::sharedDirector()->replaceScene(gameOverScene); } } }
void HelloWorld::update(float dt) { CCSize winSize = CCDirector::sharedDirector()->getWinSize(); for(int i = 0; i < arrayTarget->count();i++) { CCSprite *target = (CCSprite*)arrayTarget->objectAtIndex(i); for(int j = 0; j < arrayProjectile->count();j++) { CCSprite *projectile = (CCSprite*)arrayProjectile->objectAtIndex(j); if(target->boundingBox().intersectsRect(projectile->boundingBox())) { arrayTarget->removeObject(target); arrayProjectile->removeObject(projectile); this->removeChild(target); this->removeChild(projectile); projectilesDestroyed++; if(projectilesDestroyed >= 5) { GameOverScene *scene = GameOverScene::create(); scene->getLayer()->getLabel()->setString("You beat back 5 enemies"); CCLabelTTF* pLabel = CCLabelTTF::create("YOU WIN", "Arial", 35); CC_BREAK_IF(! pLabel); pLabel->setColor(ccc3(0,0,0)); pLabel->setPosition(ccp(winSize.width/2,winSize.height/2)); scene->addChild(pLabel); //CCSprite *win = CCSprite::create("battle.png"); // win->setScale(1.5); //win->setPosition(ccp(winSize.width/2,winSize.height/2)); //scene->getLayer()->getGameover()->addChild(win); CCDirector::sharedDirector()->replaceScene(CCTransitionShrinkGrow::transitionWithDuration(0.5, scene)); } break; } } } }
void HelloWorld::updateGame(ccTime dt) { CCMutableArray<CCSprite*> *projectilesToDelete = new CCMutableArray<CCSprite*>; CCMutableArray<CCSprite*>::CCMutableArrayIterator it, jt; for (it = _projectiles->begin(); it != _projectiles->end(); it++) { CCSprite *projectile =*it; CCRect projectileRect = CCRectMake( projectile->getPosition().x - (projectile->getContentSize().width/2), projectile->getPosition().y - (projectile->getContentSize().height/2), projectile->getContentSize().width, projectile->getContentSize().height); CCMutableArray<CCSprite*>*targetsToDelete =new CCMutableArray<CCSprite*>; for (jt = _targets->begin(); jt != _targets->end(); jt++) { CCSprite *target =*jt; CCRect targetRect = CCRectMake( target->getPosition().x - (target->getContentSize().width/2), target->getPosition().y - (target->getContentSize().height/2), target->getContentSize().width, target->getContentSize().height); if (CCRect::CCRectIntersectsRect(projectileRect, targetRect)) { targetsToDelete->addObject(target); } } for (jt = targetsToDelete->begin(); jt != targetsToDelete->end(); jt++) { CCSprite *target =*jt; _targets->removeObject(target); this->removeChild(target, true); _projectilesDestroyed++; if (_projectilesDestroyed >= 5) { GameOverScene *gameOverScene = GameOverScene::node(); gameOverScene->getLayer()->getLabel()->setString("You Win!"); CCDirector::sharedDirector()->replaceScene(gameOverScene); } } if (targetsToDelete->count() > 0) { projectilesToDelete->addObject(projectile); } targetsToDelete->release(); } for (it = projectilesToDelete->begin(); it != projectilesToDelete->end(); it++) { CCSprite* projectile =*it; _projectiles->removeObject(projectile); this->removeChild(projectile, true); } projectilesToDelete->release(); }
void HelloWorld::lose() { GameOverScene *gameOverScene = GameOverScene::node(); gameOverScene->getLayer()->getLabel()->setString("You Lose!"); CCDirector::sharedDirector()->replaceScene(gameOverScene); }
void HelloWorld::tick(float dt) { //It is recommended that a fixed time step is used with Box2D for stability //of the simulation, however, we are using a variable time step here. //You need to make an informed choice, the following URL is useful //http://gafferongames.com/game-physics/fix-your-timestep/ int velocityIterations = 8; int positionIterations = 1; // Instruct the world to perform a single step of simulation. It is // generally best to keep the time step and iterations fixed. _world->Step(dt, velocityIterations, positionIterations); bool blockFound = false; //Iterate over the bodies in the physics world for (b2Body* b = _world->GetBodyList(); b; b = b->GetNext()) { if (b->GetUserData() != NULL) { //Synchronize the AtlasSprites position and rotation with the corresponding body CCSprite* myActor = (CCSprite*)b->GetUserData(); myActor->setPosition( CCPointMake( b->GetPosition().x * PTM_RATIO, b->GetPosition().y * PTM_RATIO) ); myActor->setRotation( -1 * CC_RADIANS_TO_DEGREES(b->GetAngle()) ); if (myActor->getTag() == 1) { static int maxSpeed = 10; b2Vec2 velocity = b->GetLinearVelocity(); float32 speed = velocity.Length(); if (speed > maxSpeed) { b->SetLinearDamping(0.5); } else if (speed < maxSpeed) { b->SetLinearDamping(0.0); } } if (myActor->getTag() == 2) { blockFound = true; } } } std::vector<b2Body *>toDestroy; std::vector<MyContact>::iterator pos; for(pos = _contactListener->_contacts.begin(); pos != _contactListener->_contacts.end(); ++pos) { MyContact contact = *pos; if ((contact.fixtureA == _bottomFixture && contact.fixtureB == _ballFixture) || (contact.fixtureA == _ballFixture && contact.fixtureB == _bottomFixture)) { GameOverScene *gameOverScene = GameOverScene::node(); gameOverScene->getLayer()->getLabel()->setString("You Lose! :["); CCDirector::sharedDirector()->replaceScene(gameOverScene); } b2Body *bodyA = contact.fixtureA->GetBody(); b2Body *bodyB = contact.fixtureB->GetBody(); if (bodyA->GetUserData() != NULL && bodyB->GetUserData() != NULL) { CCSprite *spriteA = (CCSprite *) bodyA->GetUserData(); CCSprite *spriteB = (CCSprite *) bodyB->GetUserData(); // Sprite A = ball, Sprite B = Block if (spriteA->getTag() == 1 && spriteB->getTag() == 2) { if (std::find(toDestroy.begin(), toDestroy.end(), bodyB) == toDestroy.end()) { toDestroy.push_back(bodyB); } } // Sprite B = block, Sprite A = ball else if (spriteA->getTag() == 2 && spriteB->getTag() == 1) { if (std::find(toDestroy.begin(), toDestroy.end(), bodyA) == toDestroy.end()) { toDestroy.push_back(bodyA); } } } } std::vector<b2Body *>::iterator pos2; for(pos2 = toDestroy.begin(); pos2 != toDestroy.end(); ++pos2) { b2Body *body = *pos2; if (body->GetUserData() != NULL) { CCSprite *sprite = (CCSprite *) body->GetUserData(); this->removeChild(sprite, true); } _world->DestroyBody(body); } if (!blockFound) { GameOverScene *gameOverScene = GameOverScene::node(); gameOverScene->getLayer()->getLabel()->setString("You Win!"); CCDirector::sharedDirector()->replaceScene(gameOverScene); } if (toDestroy.size() > 0) { SimpleAudioEngine::sharedEngine()->playEffect("blip.caf"); } }
void BrickBreaker::tick(float dt) { int velocityIterations = 8; int positionIterations = 1; // Instruct the world to perform a single step of simulation. It is // generally best to keep the time step and iterations fixed. _world->Step(dt, velocityIterations, positionIterations); bool blockFound = false; //Iterate over the bodies in the physics world for (b2Body* b = _world->GetBodyList(); b; b = b->GetNext()) { if (b->GetUserData() != NULL) { //Synchronize the AtlasSprites position and rotation with the corresponding body Sprite* myActor = (Sprite*)b->GetUserData(); myActor->setPosition( Point( b->GetPosition().x * PTM_RATIO, b->GetPosition().y * PTM_RATIO) ); myActor->setRotation( -1 * CC_RADIANS_TO_DEGREES(b->GetAngle()) ); if (myActor->getTag() == 1) { static int maxSpeed = 10; b2Vec2 velocity = b->GetLinearVelocity(); float32 speed = velocity.Length(); if (speed > maxSpeed) { b->SetLinearDamping(0.5); } else if (speed < maxSpeed) { b->SetLinearDamping(0.0); } } if (myActor->getTag() == 2) { blockFound = true; } } } std::vector<b2Body *>toDestroy; std::vector<MyContact>::iterator pos; for(pos = _contactListener->_contacts.begin(); pos != _contactListener->_contacts.end(); ++pos) { MyContact contact = *pos; if ((contact.fixtureA == _bottomFixture && contact.fixtureB == _ballFixture) || (contact.fixtureA == _ballFixture && contact.fixtureB == _bottomFixture)) { GameOverScene *gameOverScene = GameOverScene::create(); gameOverScene->getLayer()->getLabel()->setString("Game Over!"); CCDirector::getInstance()->replaceScene(gameOverScene); } b2Body *bodyA = contact.fixtureA->GetBody(); b2Body *bodyB = contact.fixtureB->GetBody(); if (bodyA->GetUserData() != NULL && bodyB->GetUserData() != NULL) { Sprite *spriteA = (Sprite *) bodyA->GetUserData(); Sprite *spriteB = (Sprite *) bodyB->GetUserData(); // Sprite A = ball, Sprite B = Block if (spriteA->getTag() == 1 && spriteB->getTag() == 2) { if (std::find(toDestroy.begin(), toDestroy.end(), bodyB) == toDestroy.end()) { toDestroy.push_back(bodyB); } } // Sprite B = block, Sprite A = ball else if (spriteA->getTag() == 2 && spriteB->getTag() == 1) { if (std::find(toDestroy.begin(), toDestroy.end(), bodyA) == toDestroy.end()) { toDestroy.push_back(bodyA); } } } } std::vector<b2Body *>::iterator pos2; for(pos2 = toDestroy.begin(); pos2 != toDestroy.end(); ++pos2) { b2Body *body = *pos2; if (body->GetUserData() != NULL) { Sprite *sprite = (Sprite *) body->GetUserData(); this->removeChild(sprite, true); } _world->DestroyBody(body); } if (!blockFound) { GameOverScene *gameOverScene = GameOverScene::create(); gameOverScene->getLayer()->getLabel()->setString("You Win!"); HUDLayer::updateStats(0, 0, 0, 100, -10); CCDirector::getInstance()->replaceScene(gameOverScene); } if (toDestroy.size() > 0) { //SimpleAudioEngine::sharedEngine()->playEffect("blip.caf"); } }
void HelloWorld::tick(ccTime dt) { int velocityIterations = 8; int positionIterations = 1; _world->Step(dt, velocityIterations, positionIterations); bool blockFound = false; for (b2Body* b = _world->GetBodyList(); b; b = b->GetNext()) { if (b->GetUserData() != NULL) { CCSprite* myActor = (CCSprite*)b->GetUserData(); myActor->setPosition( CCPointMake( b->GetPosition().x * PTM_RATIO, b->GetPosition().y * PTM_RATIO) ); myActor->setRotation( -1 * CC_RADIANS_TO_DEGREES(b->GetAngle()) ); if (myActor->getTag() == 1) { static int maxSpeed = 20; static int minSpeed = 10; b2Vec2 velocity = b->GetLinearVelocity(); float32 speed = velocity.Length(); if (speed > maxSpeed) { b->SetLinearDamping(0.2); } else if (speed < maxSpeed) { b->SetLinearDamping(0.0); } if(speed < minSpeed) { b2Vec2 newVel; newVel.Set(1.2*velocity.x, 1.2*velocity.y); b->SetLinearVelocity(newVel); } } if (myActor->getTag() == 2) { blockFound = true; } } } std::vector<b2Body *>toDestroy; std::vector<MyContact>::iterator pos; for(pos = _contactListener->_contacts.begin(); pos != _contactListener->_contacts.end(); ++pos) { MyContact contact = *pos; if ((contact.fixtureA == _bottomFixture && contact.fixtureB == _ballFixture) || (contact.fixtureA == _ballFixture && contact.fixtureB == _bottomFixture)) { GameOverScene *gameOverScene = GameOverScene::node(); gameOverScene->getLayer()->getLabel()->setString("You Lose!"); CCDirector::sharedDirector()->replaceScene(gameOverScene); } b2Body *bodyA = contact.fixtureA->GetBody(); b2Body *bodyB = contact.fixtureB->GetBody(); if (bodyA->GetUserData() != NULL && bodyB->GetUserData() != NULL) { CCSprite *spriteA = (CCSprite *) bodyA->GetUserData(); CCSprite *spriteB = (CCSprite *) bodyB->GetUserData(); // Sprite A = ball, Sprite B = Block if (spriteA->getTag() == 1 && spriteB->getTag() == 2) { if (std::find(toDestroy.begin(), toDestroy.end(), bodyB) == toDestroy.end()) { toDestroy.push_back(bodyB); } } // Sprite B = block, Sprite A = ball else if (spriteA->getTag() == 2 && spriteB->getTag() == 1) { if (std::find(toDestroy.begin(), toDestroy.end(), bodyA) == toDestroy.end()) { toDestroy.push_back(bodyA); } } } } std::vector<b2Body *>::iterator pos2; for(pos2 = toDestroy.begin(); pos2 != toDestroy.end(); ++pos2) { b2Body *body = *pos2; if (body->GetUserData() != NULL) { CCSprite *sprite = (CCSprite *) body->GetUserData(); this->removeChild(sprite, true); } _world->DestroyBody(body); } if (!blockFound) { GameOverScene *gameOverScene = GameOverScene::node(); gameOverScene->getLayer()->getLabel()->setString("You Win!"); CCDirector::sharedDirector()->replaceScene(gameOverScene); } if (toDestroy.size() > 0) { SimpleAudioEngine::sharedEngine()->playEffect("break.mp3"); int value = atoi(this->getLabel()->getString()); char score[10]; sprintf(score, "%d", value+100); this->getLabel()->setString(score); } }