Ejemplo n.º 1
0
void MapLayer::GoNextStage(int x, int y){
    if(doorCount>10)
        return;
    
    GameScene * par = nullptr;
    
    for(DoorInfo info : doorList){
        if(info.x == x && info.y == y){
            UserDefault::getInstance()->setIntegerForKey("jejeHP", JeJe::GetInstance()->GetHP());
            UserDefault::getInstance()->setBoolForKey("blueKey", JeJe::GetInstance()->HasBlue());
            UserDefault::getInstance()->setBoolForKey("purpleKey", JeJe::GetInstance()->HasPurple());
            UserDefault::getInstance()->setBoolForKey("redKey", JeJe::GetInstance()->HasRed());
            
//            CreatureLayer::GetInstance()->WriteData();
            WriteData();
            
            int stageKind = UserDefault::getInstance()->getIntegerForKey("stageKind");
            int stageIdentity = UserDefault::getInstance()->getIntegerForKey("stageIdentity");
            UserDefault::getInstance()->setIntegerForKey("fromStageKind", stageKind);
            UserDefault::getInstance()->setIntegerForKey("fromStageIdentity", stageIdentity);
            UserDefault::getInstance()->setIntegerForKey("stageKind", info.toKind);
            UserDefault::getInstance()->setIntegerForKey("stageIdentity", info.toIdentity);
            UserDefault::getInstance()->setIntegerForKey("doorNumber", info.number);
            par = (GameScene*)(CreatureLayer::GetInstance()->getParent());
            break;
        }
    }
    if(par)
        par->Reload();
}
Ejemplo n.º 2
0
int main(int argc, char **argv) {
	srand(time(NULL));
	std::cout << "VECTOR 2048 game\n";
	int cell_size = 80;
	int padding = 15;
	int wsize = cell_size * 4 + 5 * padding;

	GameWindow *window = new GameWindow("2048", wsize, wsize+40, false);
	Camera *camera = new Camera(window->painter());
	GameScene *scene = new GameScene(camera);

	BackgroundLayer * background = new BackgroundLayer(Color(143, 116, 45));
	scene->addEntity(background);

	Board * board = new Board(cell_size, padding);

	scene->addEntity(board);
	scene->addKeyListener(board);

	scene->gameLoop(10);

	delete scene;
	delete window;

	return 0;
}
Ejemplo n.º 3
0
void ToyLayer::handIn(ToyType type)
{
	static auto deskTopPos = Vec2(230,360);
	auto toyPos = _koala->getPosition()+Vec2(50,-20);
	auto toy = _toies.at(type);
	toy->setPosition(toyPos);
	toy->setVisible(true);
	auto move = MoveTo::create(toyPos.distance(deskTopPos)/300.0f,deskTopPos);
	auto rotate = RotateBy::create(toyPos.distance(deskTopPos)/300.0f,720);
	auto action = toy->runAction(rotate);
	action->setTag(106);
	toy->runAction(Sequence::create(move,CallFunc::create([=](){

		toy->stopAllActions();
		toy->setRotation(0);
		SimpleAudioEngine::getInstance()->stopBackgroundMusic(false);

		GameScene *gameScene = (GameScene*)this->getParent();
		int count = gameScene->getStaticLayer()->getBuyer()->getBuyedToies().size();

		auto secen = PlayToyScene::create(type);
		secen->setToyCount(count);
		Director::getInstance()->pushScene(TransitionFade::create(1.5,secen));
	}),NULL));
}
Ejemplo n.º 4
0
vector2d<int> Unit::availableTile(Entity* target) {
	GameScene* scene = (GameScene*) (Game::getInstance().currentScene);
	vector2d<int> tile(-1, -1);
	vector<vector2d<int>>* candidates;

	candidates = target->getSurroundingTiles();
	for(int i = 0; i < candidates->size(); i++) {
		if(scene->getEntity(candidates->at(i).X, candidates->at(i).Y) ) {
			candidates->erase(candidates->begin() + i);
			i--;
		}		
	}
	
	float lowest = FLT_MAX;
	for(int i = 0; i < candidates->size(); i++) {
		float distance = candidates->at(i).getDistanceFrom(vector2d<int>(tileX, tileY) );
		if(distance < lowest ) {
			tile = candidates->at(i);
			lowest = distance;
		}
	}

	delete candidates;
	return tile;
}
Ejemplo n.º 5
0
void Player::Hurt(float amount)
{
	if (amount > 0)
	{
		SimpleAudioEngine::sharedEngine()->playEffect("sounds/hurt.wav");
	}

	GameScene* father = (GameScene*)this->getParent();

	m_currentBloodValue -= amount;

	if (m_currentBloodValue <= 0)
		m_currentBloodValue = 0;
	else if (m_currentBloodValue >= Player_TotalBloodValue)
		m_currentBloodValue = Player_TotalBloodValue;
		
	father->UpdateBloodValue(m_currentBloodValue*1.0/Player_TotalBloodValue);

	if(m_currentBloodValue <= 0)
	{
		Die();
	}
	else
	{
		
	}

	
	

	if(amount == 1)
	{

	}
}
Ejemplo n.º 6
0
// Start of user code methods
void LoadingScene::render()
{
    VBOScene::render();
    if(thread == NULL)
    {
        thread = new std::thread (initWorld);
        mutex->lock();
    }
    if(mutex->try_lock())
    {
        GameScene* gameScene = new GameScene(Engine::getInstance()->getPlayer());
        gameScene->init();
        
        Engine* engine = Engine::getInstance();
        
        
        gameScene->getDoubleBuffer()->getVertexBuffer()->bind();
        gameScene->getDoubleBuffer()->getIndiceBuffer()->bind();
        
        engine->setScene(gameScene);
        engine->getPlayer()->setFalling(true);
        
        glfwSetInputMode(engine->getWindow(), GLFW_CURSOR, GLFW_CURSOR_HIDDEN);
        
        engine->refresh();

        gameScene->updateIndices();
        
        mutex->unlock();
    }
}
Ejemplo n.º 7
0
void Unit::moveTo(int desX, int desY)
{
	if(hasMoved) return;
	if(desX == tileX && desY == tileY) return;

	GameScene* scene = (GameScene*)Game::getInstance().currentScene;
	vector<vector2d<int>>* newPath = scene->findPath(vector2d<s32>(tileX, tileY), vector2d<s32>(desX, desY) );
	if(!newPath) return;
	while(newPath->size() > maxDistance) {
		newPath->erase(newPath->begin());
	}

	while(newPath->size() > 0) {
		path.push_back( newPath->at(newPath->size()-1) );
		newPath->pop_back();
	}
	delete newPath;

	
	((GameScene*)scene)->tilesystem.tiles[tileX][tileY]->setEntity(NULL);
	tileX = path[path.size()-1].X;
	tileY = path[path.size()-1].Y;
	((GameScene*)scene)->tilesystem.tiles[tileX][tileY]->setEntity(this);
	hasMoved = true;
}
Ejemplo n.º 8
0
void TileSprite::addSwammSprite(bool bTumble)
{
	GameScene * gameScene = GameScene::getInstance();
	SwammSprite * pSprite = nullptr;
	int nMarioLevel = GameScene::getInstance()->getMario()->getMarioLevel();
	if (nMarioLevel >= 2)
		pSprite = SwammSprite::createWithSpriteFrameName("object/flower.png", gameScene->getWorld());
	else
		pSprite = SwammSprite::createWithSpriteFrameName("object/swamm.png", gameScene->getWorld());

	b2Fixture * fixture = gameScene->getGameWorld()->CreatePolygonBody(pSprite, getPosition(), b2_dynamicBody);

	b2Filter filter;
	filter.categoryBits = 0x0000;
	filter.maskBits = 0x0080;
	fixture->SetFilterData(filter);
	fixture->SetFriction(0.0f);
	pSprite->getBody()->SetFixedRotation(true);	//禁用旋转
	pSprite->EnableGravity(false);

	pSprite->setCameraMask(2);
	GameScene::getInstance()->getMapLayer()->getTileMap()->addChild(pSprite, 5, GSTag_Swamm);

	//执行动作
	pSprite->runAction(Sequence::create(
		MoveBy::create(0.4f, Vec2(0, bTumble ? -70.0f : 70.0f)),
		CCCallFunc::create(CC_CALLBACK_0(SwammSprite::beginAction, pSprite,
		(nMarioLevel >= 2) ? SwammType_Flower : SwammType_Swamm)),
		nullptr));
}
Ejemplo n.º 9
0
	static int objectsWithTag(lua_State* L)
	{
		GameScene* scene = checkarg<GameScene*>(L, 1);
		const char* tag = checkarg<const char*>(L, 2);

		// Get list
		auto objList = scene->findObjectsByTag(tag);

		lua_pushcfunction(L, objectIterator);

		// Create Iterator Pair
		if (objList) 
		{
#ifdef ITERATOR_USE_USERDATA
			void* iterData = lua_newuserdata(L, sizeof(ObjectIterPair));

	#ifdef XIHAD_MLD_NEW_OBJECT
			// Enable __gc function when Auto-reference-counting enabled
			Metatable::forType<ObjectIterPair>(L);
			lua_setmetatable(L, -2);
	#endif

			new (iterData) ObjectIterPair(*objList);
#else
			lua_pushlightuserdata(L, new ObjectIterPair(*objList));
#endif
		}
		else
		{
			lua_pushlightuserdata(L, 0);
		}
		
		lua_pushnil(L);
		return 3;
	}
Ejemplo n.º 10
0
void GeneticAlgorithmProfile1::BeforeDeployment(cocos2d::Layer& _sc)
{
    GameScene* gs = (GameScene*) &_sc;
    
    if( this->gaThreadData->GetNonGARounds() > 0 && this->gaThreadData->IsGaEnabled() == false)
    {
        int tc = pthread_create(&threadsGA[0], NULL, &GeneticAlgorithmProfile1::Algorithm, this->gaThreadData);
        //wait until need simulating is enabled
        while(!this->gaThreadData->IsGaInitialized() && this->gaThreadData->GetNonGARounds() > 0)
        {
            sleep(1); // wait for ga initialisation
        }
    }
    
    if( this->gaThreadData->IsGaEnabled() == true)
    {
        while(!this->gaThreadData->IsSimulating() && this->gaThreadData->GetNonGARounds() > 0)
        {
            sleep(1); // wait for start simulation to start
        }
        
        if(this->gaThreadData->IsGaEnabled() == true)
        {
            this->BackUpState(_sc);
            gs->GetGUI()->SetGameAlert2("DEPLOYMENT GA SIMULATING : PLEASE WAIT!!!");
            gs->simulationMode = true;
        }
    }
    
}
Ejemplo n.º 11
0
void 		Bomberman::loadGame() {
	GameScene *ptr;
  	char  *cfile;
  	std::string tmp;

  	cfile = BUtils::openFileDialog("Please choose your saved game");
  	if (cfile) {
  		tmp = cfile;
  		std::ifstream filestream(cfile, std::ifstream::in);
  		if (filestream && BUtils::checkMd5(tmp)) {
			if (this->_scenes[GAME])
				delete this->_scenes[GAME];
			ptr = new GameScene(this, this->_keyController, this->_camera);
			ptr->loadGame(tmp);
			this->_scenes[GAME] = ptr;
			this->_scenes[GAME]->initialize();
			this->setScene(GAME);

  		} else {
  			BUtils::runDialog(GTK_MESSAGE_ERROR, "The map file cannot be opened or is invalid.");
  		}
  	} else {
  		BUtils::runDialog(GTK_MESSAGE_WARNING, "You haven't chosen a file.");
  	}
}
Ejemplo n.º 12
0
// プログラムは WinMain から始まります
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	GameScene* mGameScene;		//ゲームシーンの作成 こいつが画面を見ている
	mGameScene = new GameScene;	//インスタンス生成 GameSceneのコンストラクタでタイトルシーンをを入れている
	
	SetGraphMode(640, 480, 16);	//画面の解像度
	ChangeWindowMode(TRUE);
	if (DxLib_Init() == -1)		// DXライブラリ初期化処理
	{
		return -1;			// エラーが起きたら直ちに終了
	}
	// 描画先画面を裏画面にセット
	SetDrawScreen(DX_SCREEN_BACK);
	// ループ
	while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0)
	{
		// 画面を初期化する
		ClearDrawScreen();

		//画面動作処理
		mGameScene->Update();

		//画面描画処理
		mGameScene->Draw();

		// 裏画面の内容を表画面に反映させる
		ScreenFlip();
	}
	DxLib_End();				// DXライブラリ使用の終了処理
	return 0;				// ソフトの終了 
}
Ejemplo n.º 13
0
void PanelLayer::pause(cocos2d::CCObject* pSender)
{
	PersonalAudioEngine::sharedEngine()->playEffect(STATIC_DATA_STRING("click_button"));
	this->getChildByTag(MENUTAG)->setVisible(false);
	GameScene* gameScene = (GameScene*)this->getParent();
	gameScene->pause();
}
Ejemplo n.º 14
0
void LevelTrigger::Update(float deltaTime) {
	if(CollidesWith("player")) {
		GameScene* scene = (GameScene*)Scene;

		int roomX = scene->CurrentLevel->CurrentRoomX;
		int roomY = scene->CurrentLevel->CurrentRoomY;

		if(roomX == 7 && roomY == 7) {
			scene->SwitchLevel("room 1");
			return;
		}

		if(roomX == 4 && roomY == 6) {
			scene->SwitchLevel("boss");
			return;
		}

		if(roomX == 6 && roomY == 6) {
			scene->SwitchLevel("shopkeeper");
			return;
		}


		scene->SwitchLevel("random");
	}
}
Ejemplo n.º 15
0
void Unit::addDistanceTiles(int x, int y, int distance) {
	Game* game = &Game::getInstance();
	GameScene* scene = (GameScene*)game->currentScene;

	if(distance < 0) return;
	if(x < 0 || x > MAPSIZE-1) {
		return;
	}
	if(y < 0 || y > MAPSIZE-1) {
		return;
	}

	if(!scene->tilesystem.tiles[x][y]->walkable) {
		return;
	}

	Entity* entity = scene->getEntity(x,y);
	if( entity != NULL && entity != this ) {
		return;
	}

	bool alreadyThere = false;
	for(int i = 0; i < distanceTiles.size(); i++) {
		if(distanceTiles.at(i)->getPosition().X == x*10 
			&& distanceTiles.at(i)->getPosition().Z == y*10) {
				alreadyThere = true;
		}
	}

	bool inAttackRange = false;
	for(int i = 0; i < scene->entities.size(); i++) {
		if(scene->entities.at(i)->player == 0) continue;
		if(scene->entities.at(i)->inAttackRange(x, y, attackDistance) ) {
			inAttackRange = true;
		}
	}

	if(!inAttackRange && hasMoved) return;

	if(!alreadyThere) {
		IAnimatedMesh* model = game->sceneManager->getMesh("res/tileDistance.3ds");
		ISceneNode* node = game->sceneManager->addMeshSceneNode(model);
		node->setMaterialFlag(EMF_LIGHTING, false);
		node->setMaterialType(video::EMT_TRANSPARENT_ALPHA_CHANNEL);
		if(inAttackRange) {
			node->setMaterialTexture( 0, game->videoDriver->getTexture("res/tileDistanceRed.png") );
		} else {
			node->setMaterialTexture( 0, game->videoDriver->getTexture("res/tileDistanceBlue.png") );
		}
		node->setPosition(vector3d<f32>(x*10, 0, y*10) );
		node->setID(0);
		distanceTiles.push_back(node);
	}

	addDistanceTiles(x-1, y, distance-1);
	addDistanceTiles(x+1, y, distance-1);
	addDistanceTiles(x, y-1, distance-1);
	addDistanceTiles(x, y+1, distance-1);
}
Ejemplo n.º 16
0
	static int requireSystem(lua_State* L)
	{
		GameScene* scene = checkarg<GameScene*>(L, 1);
		const std::string& sys = checkarg<const std::string&>(L, 2);
		scene->requireSystem(sys);

		// TODO return system
		return 0;
	}
Ejemplo n.º 17
0
void PortalSprite::onCollsion( AnimationSprite* pTarget )
{
    GameScene* scn = dynamic_cast<GameScene*>(Director::getInstance()->getRunningScene());

    if (scn)
    {
        scn->switchGame(this);
    }
}
Ejemplo n.º 18
0
CCScene* GameScene::scene()
{
	CCScene *scene = CCScene::create();

	GameScene *layer = new GameScene();
	layer->init();

	scene->addChild(layer);
	return scene;
}
Ejemplo n.º 19
0
void GameView::resizeEvent(QResizeEvent *event)
{
	QGraphicsView::resizeEvent(event);

	GameScene *s = dynamic_cast<GameScene *>(scene());
	if (s) {
		s->processViewSizeChange(event->size());
	}
	updateSceneRect(scene()->sceneRect());
}
Ejemplo n.º 20
0
void 		Bomberman::startNewGame(const std::string &mapFile) {
	GameScene *ptr;

	if (this->_scenes[GAME])
		delete this->_scenes[GAME];
	ptr = new GameScene(this, this->_keyController, this->_camera);
	ptr->initializeGame(mapFile, this->_infoGame);
	this->_scenes[GAME] = ptr;
	this->_scenes[GAME]->initialize();
	this->setScene(GAME);
}
Ejemplo n.º 21
0
// 서버로 일정 시간마다 패킷을 보냄
void* _heartbeat(void* args)
{
	int timeout = 0;
	GameScene* scene = (GameScene*)args;

	unsigned int past = CCTime::getTickCount();
	while(1)
	{
		unsigned int now = CCTime::getTickCount();

		if((now - past) > 200) // 2fps로 게임정보 갱신
		{
			string result;
			g_Client->request(result, scene->getRoomID(), TYPE_PING, "");

			if(result.length() > 0)
			{
				timeout = 0;

				vector<string> elems;
				stringstream ss(result);
				string item;
				while (std::getline(ss, item, '\n')) {
					elems.push_back(item);
				}
				ss.flush();

				if(elems[0] == "ok")
				{
					for(int i=1; i<elems.size(); i++)
					{
						char typ = elems[i].at(0);
						string data = elems[i].substr(1);

						CCArray* arr = CCArray::create(CCInteger::create(typ), CCString::create(data), NULL);
						CCNotificationHandler::postNotificationOnMainThread("message", arr);
					}
				}
				else
				{
					CCLog("Server : Error");
				}
			}
			else
			{
				timeout++;
				if(timeout > 10)
					CCMessageBox("Server: Timeout!", "Error");
			}

			past = CCTime::getTickCount();
		}
	}
}
Ejemplo n.º 22
0
void RunState::OnStart(void *data)
{
	Log("Entering Run State");
	gGui->LoadGUI("gui/views/game.rml");

	if (data)
	{
		GameScene *g = static_cast<GameScene *>(data);
		g->Resume();
	}
}
Ejemplo n.º 23
0
void GameMenuLayer::menuCallback(CCObject* pSender)
{
	CCMenuItem* menuItem = (CCMenuItem*)(pSender);
	int nIdx = menuItem->getZOrder()-1000;

	if (nIdx == GAME_MENU_START)
	{
		GameScene* pScene = new GameScene();
		pScene->runThisTest();
		pScene->release();
	}
}
Ejemplo n.º 24
0
void BucketScene::checkVideo(float dt)
{
    if (UserDefault::getInstance()->getBoolForKey("CollectDBL")) {
        Director::getInstance()->getEventDispatcher()->resumeEventListenersForTarget(this->getParent());
        
        if (dynamic_cast<GameScene*>(this->getParent())) {
            GameScene* gamescene = (GameScene*)this->getParent();
            gamescene->setButtonEnable(true);
        }
        this->removeFromParent();
    }
}
Ejemplo n.º 25
0
void Player::Die()
{
	if(m_state != DIED)
	{
		m_state = DIED;

		SimpleAudioEngine::sharedEngine()->playEffect("sounds/die.wav");

		GameScene* father = (GameScene*)this->getParent();
		father->GameOver();
	}
}
Ejemplo n.º 26
0
void GeneticAlgorithmProfile1::SetWaveForSimulation(ThreadData* td, AdditionalTowers* addTowerSettings, Chromosome *population)
{

    ///////////////////////////////////////
    
    GameScene* gs = ((GameScene*)td->_sc);
    
    //upgrade existing towers
    
    //apply new towers
    for ( std::vector<Tower*>::iterator tower = addTowerSettings->additionalTowers.begin(); tower != addTowerSettings->additionalTowers.end(); ++tower )
    {
        Tower* t = *tower;
        gs->towerslist.push_back(t);
        gs->getMapLayer()->addChild(t);
    }
    
    ///////////////////////////////////////
    
    td->creepsWaveForSimulation.clear();
    for(int j = 0; j < CreepsPerRound; j++)
    {
        Creep * creep;
        std::string s;
        double hp = population->healthPoints[j];
        double sp = population->movementSpeed[j] / speedBoost ;
        
        ElementalAffinity ef = (ElementalAffinity)population->elementalAffinity[j];
        switch (ef)
        {
            case Earth:
                s = "1creep_simpearth1.png";
                break;
            case Fire:
                s = "1creep_simpfire1.png";
                break;
            case Water:
                s = "1creep_simpwater1.png";
                break;
            case Shock:
                s = "1creep_simpshock1.png";
                break;
            case None:
                s = "1creep_simpnone1.png";
                break;
        }
        creep = new Creep(s, hp, sp);
        creep->setCoins(50);
        creep->element = ef;
        td->creepsWaveForSimulation.push_back(creep);
    }
}
Ejemplo n.º 27
0
//공격한 뒤에 받은 결과로 적 보드를 업데이트
void Player::UpdateEnemyBoard( const Position& position , const HitResult& hitResult )
{
    m_EnemyBoard->MapUpdate( position , hitResult );

    //이하 AI관련
    //적이 리턴한 결과에 따라 AI정책 결정

    GameScene* GM =	GameScene::GetInstance();
    int destroySize = 0;
    m_LastHit = position;

    if( hitResult == HIT )
    {
        if( m_AImode == HUNT)
        {
            m_Origin = position;
            m_AImode = TARGET;
            m_FindDir = FindBestNeighbor(m_Origin);
        }
    }
    else if( hitResult != MISS )
    {
        switch( hitResult )
        {
            case DESTROY_AIRCRAFT:
                destroySize = ShipSize::AIRCRAFT_SIZE;
                break;
            case DESTROY_BATTLESHIP:
                destroySize = ShipSize::BATTLESHIP_SIZE;
                break;
            case DESTROY_CRUISER:
                destroySize = ShipSize::CRUISER_SIZE;
                break;
            case DESTROY_DESTROYER:
                destroySize = ShipSize::DESTROYER_SIZE;
                break;
            default:
                break;
        }

        //파괴된 경우 EnemyUI의 해당 배를 파괴비트맵으로 변환
        GM->GetEnemyUI()->MakeDestroySprite( destroySize );
        //그리고 EnemyShipList에서 해당 배를 하나 삭제해준다.
        for( auto enemyShip : m_EnemyShipList )
        {
            if( enemyShip->m_Size == destroySize)
            {
                --enemyShip->m_Num;
            }
        }
    }
}
Ejemplo n.º 28
0
void AIStatus::ClearEnvironment()
{
    GameScene* sc = (GameScene*) this->_pGs;
    
    //delete existing labels and sprites first
    for( std::pair<Label*, Sprite*> p : this->envNodes )
    {
        //remove label
        sc->getMapLayer()->removeChild(p.first);
    }
    
    this->envNodes.clear();
}
Ejemplo n.º 29
0
GameScene* GameScene::create(const int gameType)
{
    GameScene* result = new GameScene();
    if (result->init())
    {
        GameLayer* layer = new GameLayer(gameType);
        layer->autorelease();
        result->addChild(layer);
        return result;
    }
    delete result;
    return NULL;
}
Ejemplo n.º 30
0
void GameRunState::OnStart(void *data)
{
	Log("Entering GameRun State");
	gGui->LoadGUI("gui/views/game.rml");

	// Start the game connection
	pRSClient->Connect();

	if (data)
	{
		GameScene *g = static_cast<GameScene *>(data);
		g->Resume();
	}
}