⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gamestateplay.hpp

📁 超级玛丽
💻 HPP
📖 第 1 页 / 共 3 页
字号:
			for (i=0;i<MAX_GANGPLANK;i++)
				mGangplank_2[i] = new Gangplank(this);
	

			for (i=0;i<MAX_BAD_FLOWER;i++)
				mBadFlowers[i] = new BadFlower(this);
			

			VIRTUAL_WIDTH = 640.0f;
			VIRTUAL_HEIGHT = 4800.0f;

			

			mTileMap->GetPositionMap(0.0f,0.0f);

			mMario->SetPosition(80.0f, 255.0f);
		
			bmap_3 = true;
			}

		}
	for (int i=0;i<MAX_TUNNEL;i++)
		if((((mMario->GetX()+10)-(mTunnel_4[i]->GetX()-15.0f))<=20.0f)&&((mMario->GetY()-(mTunnel_4[i]->GetY()-15.0f)))<=70.0f&&(((mTunnel_4[i]->GetX()-15.0f)-mMario->GetX()+10)<=60.0f)&&((mTunnel_4[i]->GetY()-15.0f)-mMario->GetY()<=5.0f))
		{
			if (mEngine->GetAnalogY() > 192)
			{

				mEngine->PlaySample(mSfx[SFX_SHRINK]);

				mEngine->Run("../bin2/mario.exe");
				/*coin = mMario->GetCoinCount();
				life = mMario->GetCurLife();
				
			mTileMap->Load("Res/map_2.dat", "Res/mario_2.ent");
		
			mBlock = new JumpingBlock(this);
	
			mCoin = new JumpingCoin(this);

			for (i=0;i<MAX_TURTLE;i++)
				mTurtle[i] = new Turtle(this);

			for (i=0;i<MAX_MUSH;i++)
				mBadMush[i] = new BadMush(this);

			mMushroom = new Mushroom(this);


			for (i=0;i<MAX_STATIC_COIN;i++)
				mStaticCoins[i] = new StaticCoin(this);

			for (i=0;i<MAX_TUNNEL;i++)
				mTunnel[i] = new Tunnel(this);

			for (i=0;i<MAX_TUNNEL;i++)
				mTunnel_1[i] = new Tunnel(this);

			for (i=0;i<MAX_TUNNEL;i++)
				mTunnel_2[i] = new Tunnel(this);

			for (i=0;i<MAX_TUNNEL;i++)
				mTunnel_3[i] = new Tunnel(this);

			for (i=0;i<MAX_TUNNEL;i++)
				mTunnel_4[i] = new Tunnel(this);

			for (i=0;i<MAX_GANGPLANK;i++)
				mGangplank[i] = new Gangplank(this);

			for (i=0;i<MAX_GANGPLANK;i++)
				mGangplank_1[i] = new Gangplank(this);

			for (i=0;i<MAX_GANGPLANK;i++)
				mGangplank_2[i] = new Gangplank(this);
	

			for (i=0;i<MAX_BAD_FLOWER;i++)
				mBadFlowers[i] = new BadFlower(this);
			

			VIRTUAL_WIDTH = 640.0f;
			mTileMap->GetPositionMap(0.0f,0.0f);
			mMario->SetPosition(80.0f,447.0f);
			DEFAULT_GRAVITY = 0.0001f;
			BIGM_INITIAL_JUMP_VEL=-0.265f;
			DEFAULT_WALK_SPEED=0.3f;*/
			
			}
		}
		if ((life == life +10 && mMario->GetCoinCount() == coin + 20)|| life == life +20  || mMario->GetCoinCount() == coin + 40)
			mEngine->PlaySample(mSfx[SFX_SHRINK]);
	for (int i=0;i<MAX_BADFISH;i++)
		if((((mMario->GetX()+10)-mBadFish[i]->GetX())<=32.0f)&&((mBadFish[i]->GetX()-mMario->GetX()+10)<=32.0f)&&(mBadFish[i]->GetY()-mMario->GetY()<=64.0f)&&(mBadFish[i]->GetY()-mMario->GetY()>=-64.0f) && mmm == true && mMario->mFlashTime == 0)
		{
			
			mMario->Blood();
			mMario->mFlashTime = 500;
			if (mMario->GetCurLife() <= 0)
			{
				mEngine->FreeMusic(mMusic);
				mApp->SetNextState(GAME_STATE_OVER);
				DEFAULT_GRAVITY = 0.001f;
				BIGM_INITIAL_JUMP_VEL=-0.57f;
				DEFAULT_WALK_SPEED=0.15f;
				VIRTUAL_WIDTH	= 5120.0f;
				VIRTUAL_HEIGHT = 480.0f;
			}
		}


	for (int i=0;i<MAX_TURTLE;i++)
		if((((mMario->GetX()+10)-mTurtle[i]->GetX())<=20.0f)&&((mTurtle[i]->GetX()-mMario->GetX()+10)<=60.0f)&&(mTurtle[i]->GetY()-mMario->GetY()< 50.0f)&&(mTurtle[i]->GetY()-mMario->GetY()>40.0f))
		{
			if (mEngine->GetAnalogY() < 64){}
			else
			{
				mMario->mYVelocity = -0.8f * mMario->mYVelocity;
				mTurtle[i]->Dead();
				mTurtle[i] ->tur = false;
			}
		} 

	for (int i=0;i<MAX_TURTLE;i++)
		if((((mMario->GetX()+10)-mTurtle[i]->GetX())<=20.0f)&&((mMario->GetY()-mTurtle[i]->GetY())<=0.0f) &&((mTurtle[i]->GetX()-mMario->GetX()+10)<=60.0f)&&(mTurtle[i]->GetY()-mMario->GetY()<=40.0f )&& mTurtle[i] ->tur == true && mMario->mFlashTime == 0)
		{
			mMario->Blood();
			mMario->mFlashTime = 500;
			
			if (mMario->GetCurLife() <= 0)
			{
				mEngine->FreeMusic(mMusic);
				mApp->SetNextState(GAME_STATE_OVER);
				
			}

		} 

	for (int i=0;i<MAX_MUSH;i++)
		if((((mMario->GetX()+10)-mBadMush[i]->GetX())<=20.0f)&&((mBadMush[i]->GetX()-mMario->GetX()+10)<=60.0f)&&(mBadMush[i]->GetY()-mMario->GetY()<=40.0f)&&(mBadMush[i]->GetY()-mMario->GetY()>30.0f))
		{
			if (mEngine->GetAnalogY() < 64){}
			else
			{
				mMario->mYVelocity = -0.8f * mMario->mYVelocity;
				mBadMush[i]->Dead();
				mBadMush[i]->mush = false;
			}
		}

	for (int i=0;i<MAX_MUSH;i++)
		if((((mMario->GetX()+10)-mBadMush[i]->GetX())<=20.0f)&&((mMario->GetY()-mBadMush[i]->GetY())<=0.0f) &&((mBadMush[i]->GetX()-mMario->GetX()+10)<=60.0f)&&(mBadMush[i]->GetY()-mMario->GetY()<=30.0f )&& mBadMush[i] ->mush == true && mMario->mFlashTime == 0)
		{
			mMario->Blood();
			mMario->mFlashTime = 500;
			if (mMario->GetCurLife() <= 0)
			{
				mEngine->FreeMusic(mMusic);
				mApp->SetNextState(GAME_STATE_OVER);
	
			}

		} 
	for (int i=0;i<MAX_BAD_FLOWER;i++)
		if((((mMario->GetX()+10)-mBadFlowers[i]->GetX())<=20.0f)&&((mMario->GetY()-mBadFlowers[i]->GetY())<=0.0f) &&((mBadFlowers[i]->GetX()-mMario->GetX()+10)<=75.0f)&&(mBadFlowers[i]->GetY()-mMario->GetY()<=70.0f ) && mMario->mFlashTime == 0)
		{
			mMario->Blood();
			mMario->mFlashTime = 500;
			if (mMario->GetCurLife() <= 0)
			{
				mEngine->FreeMusic(mMusic);
				mApp->SetNextState(GAME_STATE_OVER);

			}

		}
	

	for(int i=0; i<MAX_GANGPLANK; i++)
	{
		if((((mMario->GetX()+10)-mGangplank_1[i]->GetX())<=10.0f)&&((mGangplank_1[i]->GetX()-mMario->GetX()+10)<=80.0f)&&(mGangplank_1[i]->GetY()-mMario->GetY()<=20.0f)&&(mGangplank_1[i]->GetY()-mMario->GetY()>=-20.0f))
		{
			mMario->RightGlide();
		}
	
	}
	for(int i=0; i<MAX_GANGPLANK; i++)
	{
		if((((mMario->GetX()+10)-mGangplank_2[i]->GetX())<=10.0f)&&((mGangplank_2[i]->GetX()-mMario->GetX()+10)<=80.0f)&&(mGangplank_2[i]->GetY()-mMario->GetY()<=20.0f)&&(mGangplank_2[i]->GetY()-mMario->GetY()>=-20.0f))
		{
			mMario->LeftGlide();
		}

	}
		
	
	if (mBlock && mBlock->IsActive())
		mBlock->Update(dt);

	if (mCoin && mCoin->IsActive())
		mCoin->Update(dt);

	if (mMushroom && mMushroom->IsActive())
		mMushroom->Update(dt);

	int i;
	for (i=0;i<MAX_TURTLE;i++)
		if (mTurtle[i] && mTurtle[i]->IsActive())
			mTurtle[i]->Update(dt);

	for (i=0;i<MAX_MUSH;i++)
		if (mBadMush[i] && mBadMush[i]->IsActive())
			mBadMush[i]->Update(dt);

	mMenu->UpdateMenu();

	int frame = -1;
	JSprite* sprite;
	for (i=0;i<MAX_STATIC_COIN;i++)
	{
		if (mStaticCoins[i] && mStaticCoins[i]->IsActive())
		{
			mStaticCoins[i]->Update(dt);
			sprite = mStaticCoins[i]->GetSprite();
			if (frame == -1)
				frame = sprite->GetAnimationFrame();		// sync all the animation of all coins
			else
				sprite->SetAnimationFrame(frame);
		}
		
	}
	
	for (i=0;i<MAX_BAD_FLOWER;i++)
		if (mBadFlowers[i] && mBadFlowers[i]->IsActive())
			mBadFlowers[i]->Update(dt);

	//mEngine->printf("FPS:%6.2f", mEngine->GetFPS());
}


void GameStatePlay::Render()
{

	PIXEL_TYPE colors[] =
	{
		ARGB(255,0,0,0),
		ARGB(255,0,0,0),
		//ARGB(255,0,0,255),
		//ARGB(255,0,0,255),
		ARGB(255,0,0,0),
		ARGB(255,0,0,0)
	};
	

	float mapX, mapY;
	
	mTileMap->GetPosition(&mapX, &mapY);
	
	mEngine->FillRect(0, 0.0f-mapY, SCREEN_WIDTH_F, VIRTUAL_HEIGHT, colors);	// clear background to black

	//mEngine->EnableTextureFilter(false);
	
	//mEngine->EnableTextureFilter(false);
	float x = (mapX+200.0f)*0.02f;
	int n = (int) x;
	n = (n / 512);
	x -= (n*512);

	float y = 0.0f-mapY;
	
	//scrollerCloud->Render(x, y);

	

	x = mapX;

	y = mapY;
	for (int i = 0; i < VIRTUAL_WIDTH / 768.0f; i++)
	{
		for (int j = 0; j < VIRTUAL_HEIGHT / 480.0f; j++)
		{
			mEngine->RenderQuad(mRainbow,(float)i*768.0f -x, (float)j*480.0f -y);
		}
	}
	
	
	
	
	

	mMario->Render();
	if(mmm)
	{	
		for (int i=0;i<MAX_BADFISH;i++)	
			mBadFish[i]->Render();
	}
	
	if (mMushroom)
		mMushroom->Render();
	
	if (mBlock && mBlock->IsActive())
		mBlock->Render();

	if (mCoin && mCoin->IsActive())
		mCoin->Render();
	
	int i;

	for (i=0;i<MAX_TURTLE;i++)
		if (mTurtle[i] && mTurtle[i]->IsActive())
			mTurtle[i]->Render();

	for (i=0;i<MAX_MUSH;i++)
		if (mBadMush[i] && mBadMush[i]->IsActive())
			mBadMush[i]->Render();

	for (i=0;i<MAX_STATIC_COIN;i++)
		if (mStaticCoins[i] && mStaticCoins[i]->IsActive())
			mStaticCoins[i]->Render();

	for (i=0;i<MAX_TUNNEL;i++)
		if (mTunnel[i] && mTunnel[i]->IsActive())
			mTunnel[i]->Render();

	for (i=0;i<MAX_TUNNEL;i++)
		if (mTunnel_1[i] && mTunnel_1[i]->IsActive())
			mTunnel_1[i]->Render();

	for (i=0;i<MAX_TUNNEL;i++)
		if (mTunnel_2[i] && mTunnel_2[i]->IsActive())
			mTunnel_2[i]->Render();

	for (i=0;i<MAX_TUNNEL;i++)
		if (mTunnel_3[i] && mTunnel_3[i]->IsActive())
			mTunnel_3[i]->Render();

	for (i=0;i<MAX_TUNNEL;i++)
		if (mTunnel_4[i] && mTunnel_4[i]->IsActive())
			mTunnel_4[i]->Render();

	for (i=0;i<MAX_GANGPLANK;i++)
		if (mGangplank[i] && mGangplank[i]->IsActive())
			mGangplank[i]->Render();

	for (i=0;i<MAX_GANGPLANK;i++)
		if (mGangplank_1[i] && mGangplank_1[i]->IsActive())
			mGangplank_1[i]->Render();

	for (i=0;i<MAX_GANGPLANK;i++)
		if (mGangplank_2[i] && mGangplank_2[i]->IsActive())
			mGangplank_2[i]->Render();

	for (i=0;i<MAX_BAD_FLOWER;i++)
		if (mBadFlowers[i] && mBadFlowers[i]->IsActive())
			mBadFlowers[i]->Render();

	mTileMap->Render(0,0);
	if(bmap_3)
		for (int i = 0; i < 18; i++)
			mEngine->RenderQuad(mStab,(float)i*32.0f + 32.0f, 0);


		
	if(mMario->GetCoinCount()>=20 && mMario->GetCurLife() < maxLifeCount)
	{
		mMario->SetCoinCount(mMario->GetCoinCount()-20);
		mMario->SetCurLife(mMario->GetCurLife()+10);
	}
	this->mMenu->RenderCoin(mMario->GetCoinCount());
	this->mMenu->RenderBlood(maxLifeCount,mMario->GetCurLife());
	this->mMenu->RenderMenu();
}


void GameStatePlay::SpawnStaticCoin(int col, int row)
{
	
	mStaticCoins[mStaticCoinsCount++]->Spawn(col, row);
	if (mStaticCoinsCount >= MAX_STATIC_COIN)
		mStaticCoinsCount = 0;
	
}

void GameStatePlay::SpawnTunnel(int col, int row)
{
	mTunnel[mTunnelCount++]->Spawn(col, row);
	if (mTunnelCount >= MAX_TUNNEL)
		mTunnelCount = 0;
	
	
}

void GameStatePlay::SpawnTunnel_1(int col, int row)
{
	mTunnel_1[mTunnel_1Count++]->Spawn(col, row);
	if (mTunnel_1Count >= MAX_TUNNEL)
		mTunnel_1Count = 0;
	
	
}

void GameStatePlay::SpawnTunnel_2(int col, int row)
{
	mTunnel_2[mTunnel_2Count++]->Spawn(col, row);
	if (mTunnel_2Count >= MAX_TUNNEL)
		mTunnel_2Count = 0;
	
	
}

void GameStatePlay::SpawnTunnel_3(int col, int row)
{
	mTunnel_3[mTunnel_3Count++]->Spawn(col, row);
	if (mTunnel_3Count >= MAX_TUNNEL)
		mTunnel_3Count = 0;
	
	
}

void GameStatePlay::SpawnTunnel_4(int col, int row)
{
	mTunnel_4[mTunnel_4Count++]->Spawn(col, row);
	if (mTunnel_4Count >= MAX_TUNNEL)
		mTunnel_4Count = 0;
	
	
}

void GameStatePlay::SpawnGangplank(int col, int row)
{
	mGangplank[mGangplankCount++]->Spawn(col, row);
	if (mGangplankCount >= MAX_GANGPLANK)
		mGangplankCount = 0;
	
	
}

void GameStatePlay::SpawnGangplank_1(int col, int row)
{
	mGangplank_1[mGangplankCount_1++]->Spawn(col, row);
	if (mGangplankCount_1 >= MAX_GANGPLANK)
		mGangplankCount_1 = 0;
	
	
}

void GameStatePlay::SpawnGangplank_2(int col, int row)
{
	mGangplank_2[mGangplankCount_2++]->Spawn(col, row);
	if (mGangplankCount_2 >= MAX_GANGPLANK)
		mGangplankCount_2 = 0;
	
	
}


void GameStatePlay::SpawnBadFlower(int col, int row)
{
	
	mBadFlowers[mBadFlowersCount++]->Spawn(col, row);
	if (mBadFlowersCount >= MAX_BAD_FLOWER)
		mBadFlowersCount = 0;
	
}


void GameStatePlay::SpawnTurtle(int col, int row)
{
	//if (mTurtle)
	{
		mTurtle[mTurtleCount++]->Spawn(col, row);
	}
}

void GameStatePlay::SpawnBadMush(int col, int row)
{
	//if (mTurtle)
	{
		mBadMush[mBadMushCount++]->Spawn(col, row);
	}
}


void GameStatePlay::SpawnMushroom(int col, int row)
{
	mMushroom->Spawn(col, row);
	haveMushroom = true;
}

bool GameStatePlay::GetHaveMushroom()
{
	return haveMushroom;
}


void GameStatePlay::PlaySfx(int idx)
{
	if (mSfx[idx])
		mEngine->PlaySample(mSfx[idx]);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -