亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? game.cpp

?? 泡泡堂單機版(含ASL游戲引擎源碼 泡泡堂單機版(含ASL游戲引擎源碼
?? CPP
字號:
#include "game.h"
#include "sound.h"
#include <time.h>

CGame *g_pGame = NULL;

ASLBitmap CGame::m_bmBG;
ASLBitmap CGame::m_bmStart;
ASLBitmap CGame::m_bmNumber;
ASLBitmap CGame::m_bmWin;
ASLBitmap CGame::m_bmPlayer;
ASLBitmap CGame::m_bmDraw;

CGame::CGame(void)
: m_nAniSeq(0)
, m_Timer(1000)
, m_nTimeRemain(180)
, m_fTime(0.0f)
{
}

void CGame::Init(void)
{
	ASLFileLoader loader;
	
	loader.SetDirApp("Ini");
	FACTORY.LoadFixedPrototype(loader.Load("FixedItem.ini"));
	CRole::LoadSharedBitmap(loader.Load("RoleShared.ini"));
	ROLE[0].Load(loader.Load("Role1.ini"));
	ROLE[1].Load(loader.Load("Role2.ini"));

	loader.SetDirApp("Pic");
	m_bmBG.LoadBMP(loader.Load("BG.bmp"));
	m_bmStart.LoadBMP(loader.Load("Start.bmp"));
	m_bmStart.SetBlock(3, 1);
	m_bmStart.SetColorKey();
	m_bmNumber.LoadBMP(loader.Load("Number.bmp"));
	m_bmNumber.SetBlock(10, 1);
	m_bmNumber.SetColorKey();
	m_bmWin.LoadBMP(loader.Load("Win.bmp"));
	m_bmWin.SetBlock(3, 1);
	m_bmWin.SetColorKey();
	m_bmDraw.LoadBMP(loader.Load("Draw.bmp"));
	m_bmDraw.SetBlock(3, 1);
	m_bmDraw.SetColorKey();
	m_bmPlayer.LoadBMP(loader.Load("Player.bmp"));
	m_bmPlayer.SetBlock(1, 2);
	m_bmPlayer.SetColorKey();

	srand((unsigned int)time(NULL));

	SOUND.Init();
}

void CGame::LoadMap(ASLFile *pMapFile)
{
	MAP.LoadMap(pMapFile);
}

void CGame::Draw(void)
{
	// 畫背景
	m_bmBG.Draw(SCREEN, 0, 0);
	
	// 畫地圖
	MAP.Draw();

	// 畫時間
	m_bmNumber.Draw(SCREEN, 708, 43, m_nTimeRemain / 60 / 10);
	m_bmNumber.Draw(SCREEN, 722, 43, m_nTimeRemain / 60 % 10);
	m_bmNumber.Draw(SCREEN, 740, 43, m_nTimeRemain % 60 / 10);
	m_bmNumber.Draw(SCREEN, 754, 43, m_nTimeRemain % 60 % 10);
}

void CGame::Start(void)
{
	m_Timer.Stop();
	m_Timer.Play();
	ROLE[0].New();
	ROLE[1].New();
	ROLE[0].Start();
	ROLE[1].Start();
	m_fTime = 0;
	m_nAniSeq = 0;

	// 設置出生地點
	ROLE[0].SetPosition(1, 1);
	ROLE[1].SetPosition(13, 15);

	SOUND.Play(snBG);
	SOUND.Play(snStart);
}

void CGame::ProcessInput(void)
{
	// 取玩家1輸入
	if (INPUT.GetKeyState('R'))
	{
		ROLE[0].Move(drUp);
	}
	else if (INPUT.GetKeyState('F'))
	{
		ROLE[0].Move(drDown);
	}
	else if (INPUT.GetKeyState('D'))
	{
		ROLE[0].Move(drLeft);
	}
	else if (INPUT.GetKeyState('G'))
	{
		ROLE[0].Move(drRight);
	}

	if (INPUT.IsKeyJustDown(VK_LSHIFT))
	{
		ROLE[0].LayPopo();
	}

	// 取玩家2輸入
	if (INPUT.GetKeyState(VK_UP))
	{
		ROLE[1].Move(drUp);
	}
	else if (INPUT.GetKeyState(VK_DOWN))
	{
		ROLE[1].Move(drDown);
	}
	else if (INPUT.GetKeyState(VK_LEFT))
	{
		ROLE[1].Move(drLeft);
	}
	else if (INPUT.GetKeyState(VK_RIGHT))
	{
		ROLE[1].Move(drRight);
	}

	if (INPUT.IsKeyJustDown(VK_RSHIFT))
	{
		ROLE[1].LayPopo();
	}
}

void CGame::DrawStart(void)
{
	m_bmStart.Draw(SCREEN, 187, 73 - max(0, m_nAniSeq - 40) * 20, 0);
	m_bmStart.Draw(SCREEN, 280, 73 - max(0, m_nAniSeq - 43) * 20, 1);
	m_bmStart.Draw(SCREEN, 365, 73 - max(0, m_nAniSeq - 46) * 20, 2);
}

void CGame::DrawEnd(void)
{
	if (m_EndType == etDraw)
	{
		m_bmDraw.Draw(SCREEN, 206, 115, 0);
		m_bmDraw.Draw(SCREEN, 300, 115, 1);
		m_bmDraw.Draw(SCREEN, 385, 115, 2);
	}
	else
	{
		m_bmWin.Draw(SCREEN, 206, 115, 0);
		m_bmWin.Draw(SCREEN, 300, 115, 1);
		m_bmWin.Draw(SCREEN, 385, 115, 2);
		if (m_EndType == etFstWin)
		{
			m_bmPlayer.Draw(SCREEN, 237, 86, 0);
		}
		else
		{
			m_bmPlayer.Draw(SCREEN, 237, 86, 1);
		}
	}
}

void CGame::ClearBomb(void)
{
	for (int i = 1; i <= CELL_Y; ++i)
	{
		for (int j = 1; j <= CELL_X; ++j)
		{
			if (MAP[i][j].Type == itPopo)
			{
				SAFE_DELETE(MAP[i][j].pItem);
				MAP[i][j].Type = itNone;
			}
		}
	}
}

//-----------------------------------------------------------------------------
CBasicGame::CBasicGame(void)
: m_State(gsStart)
{
}

void CBasicGame::Start(void)
{
	CGame::Start();
	m_nTimeRemain = 180;
	m_State = gsStart;
}

bool CBasicGame::Update(float fDelta)
{
	static const float START_DELTA = 0.03f;
	static const float END_DELTA = 0.1f;

	// 更新地圖
	MAP.Update(fDelta);

	// 更新角色
	for (int i = 0; i < ROLE_NUM; ++i)
	{
		ROLE[i].Update(fDelta);
	}

	switch (m_State)
	{
	case gsRun:
		ProcessInput();

		// 檢測計時
		m_nTimeRemain = 180 - m_Timer.GetTime() / 1000;
		if (m_nTimeRemain <= 0)
		{
			m_nTimeRemain = 0;

			if (!ROLE[0].IsDead() && !ROLE[1].IsDead())
			{
				m_State = gsEnd;
				m_EndType = etDraw;
				SOUND.StopMusic();
				SOUND.Play(snDraw);
				ClearBomb();
				for (int i = 0; i < ROLE_NUM; ++i)
				{
					ROLE[i].Normal();
				}
			}
		}
		break;
		
	case gsStart:
		m_fTime += fDelta;
		if (m_fTime > START_DELTA)
		{
			m_fTime -= START_DELTA;
			m_nAniSeq++;
			if (m_nAniSeq > 50)
			{
				m_State = gsRun;
				m_fTime = 0;
				m_nAniSeq = 0;
			}
		}
		break;

	case gsEnd:
		m_fTime += fDelta;
		if (m_fTime > END_DELTA)
		{
			m_fTime -= END_DELTA;
			m_nAniSeq++;
			if (m_nAniSeq > 40)
			{
				return false;
			}
		}
		break;
	}

	return true;
}

void CBasicGame::Draw(void)
{
	CGame::Draw();

	// 畫開始動畫
	if (m_State == gsStart)
	{
		DrawStart();
	}

	if (m_State == gsEnd)
	{
		DrawEnd();
	}
}

void CBasicGame::RoleOnDie(CRole *pRole)
{
	for (int i = 0; i < ROLE_NUM; ++i)
	{
		if (&ROLE[i] != pRole)
		{
			ROLE[i].Normal();
		}
	}
}

void CBasicGame::RoleDead(CRole *pRole)
{
	for (int i = 0; i < ROLE_NUM; ++i)
	{
		if (&ROLE[i] != pRole)
		{
			ROLE[i].Win();
		}
	}
	
	ClearBomb();
	SOUND.StopMusic();
	SOUND.Play(snWin);
	m_State = gsEnd;
	if (&ROLE[0] == pRole)
	{
		m_EndType = etSecWin;
	}
	else
	{
		m_EndType = etFstWin;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
首页国产欧美日韩丝袜| 首页国产欧美久久| 国产精品久久综合| 精品久久久久久久久久久久久久久| 欧美日韩国产高清一区二区三区 | 国产精品美女视频| 中文字幕视频一区| 一区二区三区蜜桃网| 亚洲午夜一二三区视频| 日日夜夜免费精品| 激情另类小说区图片区视频区| 久久国产三级精品| 国产99精品国产| 91香蕉视频mp4| 在线免费视频一区二区| 日韩欧美自拍偷拍| 国产喂奶挤奶一区二区三区| 国产精品乱码一区二三区小蝌蚪| 亚洲免费观看在线视频| 午夜精品免费在线观看| 狠狠色狠狠色综合日日91app| 国产高清精品在线| 在线观看日韩一区| 欧美成va人片在线观看| 国产精品你懂的在线| 亚洲图片欧美色图| 国产xxx精品视频大全| 在线观看视频欧美| 久久久国产精华| 亚洲国产综合在线| 成人免费视频播放| 91麻豆精品国产91久久久使用方法 | 国产精品伦理在线| 婷婷一区二区三区| 白白色 亚洲乱淫| 在线播放视频一区| 国产精品久久久久久亚洲毛片| 亚洲一二三区在线观看| 国产传媒一区在线| 欧美一区二区三区视频免费| 国产精品久久久久久久蜜臀| 免费成人美女在线观看.| 91美女福利视频| 久久一夜天堂av一区二区三区| 亚洲最色的网站| 不卡一卡二卡三乱码免费网站| 欧美日韩国产乱码电影| |精品福利一区二区三区| 激情综合色播五月| 欧美老人xxxx18| 亚洲日本免费电影| 盗摄精品av一区二区三区| 欧美xxxxx牲另类人与| 亚洲不卡在线观看| 91国产丝袜在线播放| 国产精品麻豆视频| 国产成人精品网址| 久久久国产综合精品女国产盗摄| 视频一区中文字幕| 欧美日韩亚洲另类| 亚洲图片欧美一区| 在线观看网站黄不卡| 一区二区三区中文字幕精品精品| 99精品国产热久久91蜜凸| 国产色婷婷亚洲99精品小说| 久久国产人妖系列| 精品蜜桃在线看| 另类小说图片综合网| 日韩视频在线你懂得| 美女视频网站久久| 精品国产免费一区二区三区四区| 日韩福利电影在线| 欧美精品一卡二卡| 丝袜美腿一区二区三区| 这里只有精品电影| 久久99国产乱子伦精品免费| 日韩午夜在线影院| 激情综合一区二区三区| 国产视频一区二区在线观看| 成人综合婷婷国产精品久久| 亚洲欧美在线视频观看| 色婷婷精品大视频在线蜜桃视频| 亚洲免费av高清| 欧美日韩二区三区| 美女视频一区二区| 国产拍揄自揄精品视频麻豆| eeuss鲁片一区二区三区在线看| 中文字幕一区二区三区四区| 欧美这里有精品| 日韩成人av影视| 久久婷婷国产综合精品青草| 丁香亚洲综合激情啪啪综合| 亚洲精品videosex极品| 欧美人与z0zoxxxx视频| 久88久久88久久久| 中文字幕一区二区三区四区| 欧美日韩成人综合天天影院| 黄色成人免费在线| 综合色天天鬼久久鬼色| 69成人精品免费视频| 国产精品亚洲专一区二区三区| 亚洲欧美日韩在线不卡| 欧美精品vⅰdeose4hd| 国产成人在线视频网站| 一区二区三区在线免费视频| 日韩欧美一区在线| 99在线视频精品| 免费在线观看日韩欧美| 国产精品嫩草久久久久| 7777精品伊人久久久大香线蕉的| 国产精品一二三区在线| 午夜久久电影网| 国产欧美日韩在线观看| 欧美日韩日日夜夜| 北条麻妃国产九九精品视频| 日本不卡一区二区| 亚洲色图都市小说| 久久久五月婷婷| 欧美精品日日鲁夜夜添| av亚洲精华国产精华| 蜜桃av一区二区| 亚洲午夜久久久久中文字幕久| 久久久久久久久伊人| 欧美日韩国产另类不卡| 色综合久久久久综合99| 国产精品一线二线三线精华| 视频一区二区欧美| 亚洲精品国产无天堂网2021 | 国产成人免费在线视频| 日本不卡视频在线| 亚洲国产欧美另类丝袜| 亚洲色图制服诱惑| 国产精品久久综合| 国产精品欧美久久久久无广告| 欧美成人精品二区三区99精品| 欧美在线不卡视频| 一本大道av一区二区在线播放 | 亚洲电影你懂得| 中文字幕一区二| 国产精品久久久久影院老司 | 91在线视频免费91| 国产 日韩 欧美大片| 国内精品免费**视频| 久久国产精品色婷婷| 久久99久久99精品免视看婷婷| 青青青伊人色综合久久| 免费看日韩a级影片| 日韩va欧美va亚洲va久久| 五月婷婷综合网| 午夜激情久久久| 日本亚洲免费观看| 久久精品国产999大香线蕉| 美美哒免费高清在线观看视频一区二区 | 亚洲高清久久久| 亚洲成人动漫在线观看| 亚洲国产成人精品视频| 婷婷综合五月天| 六月丁香综合在线视频| 精品一区二区免费| 福利一区二区在线| 成人精品一区二区三区四区| av激情亚洲男人天堂| 色婷婷国产精品| 欧美三区在线观看| 欧美成人高清电影在线| 26uuu精品一区二区三区四区在线| 精品国产免费久久| 国产日产亚洲精品系列| 亚洲同性gay激情无套| 午夜成人免费电影| 国产在线一区观看| 99久久国产综合精品女不卡| 欧美三级视频在线| 26uuu色噜噜精品一区二区| 国产精品美女久久久久久2018| 亚洲色图在线视频| 爽好多水快深点欧美视频| 国产一区二区在线电影| 91色.com| 欧美tickling挠脚心丨vk| 亚洲国产精品ⅴa在线观看| 亚洲曰韩产成在线| 青青草精品视频| 91在线云播放| 日韩一本二本av| 亚洲精选免费视频| 久久99久久精品| 在线观看亚洲a| 国产日产精品一区| 视频在线观看一区二区三区| 高清在线不卡av| 欧美一区二区国产| 一区二区三区在线影院| 国产乱码精品一区二区三区五月婷| 色呦呦国产精品| 国产精品视频一区二区三区不卡| 青青草国产精品亚洲专区无| 97精品视频在线观看自产线路二 | 国产精品一区免费视频| 欧美日韩黄视频|