Example #1
0
void Game::ShowFail()//显示失败信息
{
	static FullScrAni ani;
	static Button butcont(clientw*4/5-200,clienth*4/5);
	static Button butback(clientw/5,clienth*4/5);

	ani.SetAni(ANI_FAIL);
	ani.Draw();
	butcont.SetAni(ANI_BUTTON,ANI_BUTTON_CONTINUE);
	butcont.Deal();
	butcont.Draw();
	butback.SetAni(ANI_BUTTON,ANI_BUTTON_BACK);
	butback.Deal();
	butback.Draw();
	if(butcont.MousePressed())
	{
		butcont.Recover();
		state=GAME_RESTART;
		ani.Ani()->Restart();
	}
	else if(butback.MousePressed())
	{
		butback.Recover();
		level=1;
		Destroy();
		state=GAME_SHOWMENU;
	}
}
Example #2
0
void Game::Run()//游戏运行
{
	//界面元素的创建
	static FullScrAni outline;
	static Text texlevel(675,217,20,20);
	static Text texfood(675,300,20,20);
	static Text texscore(675,387,20,20);

	static Button butpause(628,500,100,50);
	static Button butret(740,40,50,50);
	//界面元素动画的设置
	butpause.SetAni(ANI_BUTTON,pPanel->IsPause()?ANI_BUTTON_RECOVER:ANI_BUTTON_PAUSE);
	butret.SetAni(ANI_BUTTON,ANI_BUTTON_RETURN);

	outline.SetAni(ANI_OUTLINE);
	//响应
	butpause.Deal();
	butret.Deal();
	if(butpause.MousePressed())
	{//是否暂停
		butpause.Recover();
		pPanel->SetPause(!pPanel->IsPause());
	}

	outline.Draw();
	pPanel->DoFrame();
	//绘制
	butpause.Draw();
	butret.Draw();

	texlevel.SetText(level,RGB(255,255,255));
	texscore.SetText(pPanel->Score(),RGB(255,255,255));
	texfood.SetText(pPanel->RestFood(),RGB(255,255,255));
	texlevel.Draw();
	texscore.Draw();
	texfood.Draw();
	if(pPanel->Overed())
	{
		if(pPanel->Won())state=GAME_WIN;
		else state=GAME_FAIL;
		manager.Stop();
	}
	if(butret.MousePressed())
	{
		butret.Recover();
		Destroy();
		state=GAME_SHOWMENU;
	}
	
	roundtime+=1000/FPS;
	if(roundtime%1000<1000/FPS)//每秒储存一次
		SaveArchive();
}
Example #3
0
void Game::ShowHelp()//显示帮助信息
{
	static FullScrAni helppage;
	static Button helpback(clientw*3/4-30,clienth*7/8,200,50);
	helppage.SetAni(ANI_HELP);
	helpback.SetAni(ANI_BUTTON,ANI_BUTTON_BACK);
	
	helpback.Deal();
	helppage.Draw();
	helpback.Draw();
	if(helpback.MousePressed())
	{
		helpback.Recover();
		state=GAME_SHOWMENU;
	}
}
Example #4
0
void Game::ShowWin()//显示胜利信息
{
	static FullScrAni ani;
	static Button butcont(clientw/2-100,clienth*4/5);
	
	ani.SetAni(ANI_WIN);
	ani.Draw();
	butcont.SetAni(ANI_BUTTON,ANI_BUTTON_CONTINUE);
	butcont.Deal();
	butcont.Draw();
	if(butcont.MousePressed())
	{
		butcont.Recover();
		state=GAME_RESTART;
		level++;
		ani.Ani()->Restart();
	}
}
Example #5
0
void Game::ShowMenu()//显示菜单
{
	static bool firstrun=true;
	//创建界面元素
	static FullScrAni menubk;

	static Button butnew(clientw/2,clienth/3+20);
	static Button butold(clientw/2,clienth/3+80);
	static Button butsel(clientw/2,clienth/3+140);
	static Button buthelp(clientw/2,clienth/3+200);
	static Button butquit(clientw/2,clienth/3+260);

	static SelBox sel(clientw/8+110,clienth*2/5+45,150,50);
	static Rect selbkground(clientw/8,clienth*2/5,clientw/3,clienth/3);
	static Button butok(clientw/8+20,clienth*2/5+120,100,50);
	static Button butcl(clientw/8+145,clienth*2/5+120,100,50);

	manager.Play(MID_MENUBKM);

	if(firstrun)
	{
		//设置动画
		menubk.SetAni(ANI_MENUBK);
		butnew.SetAni(ANI_BUTTON,ANI_BUTTON_NEW);
		butold.SetAni(ANI_BUTTON,ANI_BUTTON_OLD);
		butsel.SetAni(ANI_BUTTON,ANI_BUTTON_SEL);
		buthelp.SetAni(ANI_BUTTON,ANI_BUTTON_HELP);
		butquit.SetAni(ANI_BUTTON,ANI_BUTTON_QUIT);

		butok.SetAni(ANI_BUTTON,ANI_BUTTON_OK);
		butcl.SetAni(ANI_BUTTON,ANI_BUTTON_CANCEL);
		sel.Add(1).Add(2).Add(3).Add(4).Add(5).Add(6).Add(7).Add(8).Add(9);
		sel.SetAni(-1,ANI_BUTTON,ANI_BUTTON,-1,ANI_BUTTON_LEFT,ANI_BUTTON_RIGHT);
		selbkground.SetAni(ANI_SELBKGROUND);
	}

	//界面元素的响应
	butnew.Deal();
	butold.Deal();
	butsel.Deal();
	buthelp.Deal();
	butquit.Deal();
	//界面元素的绘制
	menubk.Draw();
	butnew.Draw();
	butold.Draw();
	butsel.Draw();
	buthelp.Draw();
	butquit.Draw();

	//检测界面元素的状态
	if(butnew.MousePressed())//新的开始
	{
		level=1;
		butnew.Recover();
		state=GAME_CREATE;
	}
	if(butold.MousePressed())//旧的回忆
	{
		ReadArchive();
		butold.Recover();
		state=GAME_RUN;
	}
	if(butsel.MousePressed())//选择关卡
	{
		selbkground.Draw();
		sel.Deal();
		sel.Draw();
		butok.Deal();
		butcl.Deal();

		butok.Draw();
		butcl.Draw();
		if(butok.MousePressed())
		{
			butsel.Recover();
			butok.Recover();
			level=atoi(sel.str().c_str());
			state=GAME_CREATE;
		}
		if(butcl.MousePressed())
		{
			butcl.Recover();
			butsel.Recover();
		}
	}
	if(buthelp.MousePressed())//帮助
	{
		buthelp.Recover();
		state=GAME_SHOWHELP;
	}
	if(butquit.MousePressed())
	{
		::PostQuitMessage(0);
	}
	firstrun=false;
	
}