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

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

?? bmframe.cpp

?? 類似泡泡堂程序代碼 類屬游戲
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// BMFrame.cpp : implementation file
//
#define DIRECTINPUT_VERSION 0x0700
#include "stdafx.h"
#include "resource.h"
#include "BMFrame.h"
#include "BMBomb.h"
#include "BMPlayer.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// BMFrame
IMPLEMENT_DYNCREATE(BMFrame, CFrameWnd)

//聲明 DirectDraw 變量
LPDIRECTDRAW7              DD;  
LPDIRECTDRAWSURFACE7       DDSur; 
LPDIRECTDRAWSURFACE7       DDBuf; 
LPDIRECTDRAWSURFACE7	   DDPla[15];
DDSCAPS2				   DDcaps;
DDSURFACEDESC2             DDde;
HRESULT					   result;
DDCOLORKEY                 key;

//聲明 DirectSound 變量
LPDIRECTSOUND			   DS;          
LPDIRECTSOUNDBUFFER        DSPri;  
LPDIRECTSOUNDBUFFER        DSBuf[15];  
WAVEFORMATEX			   DSfmt;         
WAVEFORMATEX			   wfmt;        
DSBUFFERDESC			   DSde;        
MMCKINFO				   ckRiff;       
MMCKINFO				   ckInfo;     
MMRESULT				   mmresult;    
HMMIO					   hmmio;              
DWORD					   wsize;                 
LPVOID					   pAudio;
DWORD					   bytesAudio;

//聲明 DirectInput 變量
LPDIRECTINPUT7			   DI;       
LPDIRECTINPUTDEVICE7	   DIkb;
char					keybuffer[256];

//聲明其它變量
HDC hdc,dhdc;
HBITMAP bitmap;
int i, j, k, l;

int posP1, posP2;
char map[13][18];
bool isthing; 
bool isstate; 
int picnum;
int gametime = 0;		//游戲時鐘
int bombtotal = 0;		//炸彈總數

BMPlayer player[6];		//玩家
BMBomb bomb[36];		//炸彈

int gamestate = MAINMENU;	//游戲狀態
int menuselect = 0;
bool menudown;

//constructor & destructor
BMFrame::BMFrame()
{
	Create(NULL,"繪圖窗口",WS_POPUP); 
	hdc = ::CreateCompatibleDC(NULL);
	::ShowCursor(false);

	//加載圖片
	CreateDDPla(800,600,"resource\\image\\back.bmp",0);
	CreateDDPla(540,240,"resource\\image\\move.bmp",1);
	ColorKey(1);
	CreateDDPla(200,320,"resource\\image\\thing.bmp",2);
	ColorKey(2);
	CreateDDPla(200,480,"resource\\image\\state.bmp",3);
	ColorKey(3);
	CreateDDPla(960,480,"resource\\image\\over.bmp",4);
	ColorKey(4);
	CreateDDPla(800,600,"resource\\image\\enter.bmp",5);	
	CreateDDPla(600,150,"resource\\image\\menu.bmp",6);
	ColorKey(6);


	//加載音樂
	CreateDSBuf("resource\\sound\\back.wav",0);
	CreateDSBuf("resource\\sound\\lay.wav",1);
	CreateDSBuf("resource\\sound\\bomb.wav",2);
	CreateDSBuf("resource\\sound\\award.wav",3);
	CreateDSBuf("resource\\sound\\get.wav",4);
	CreateDSBuf("resource\\sound\\trap.wav",5);
	CreateDSBuf("resource\\sound\\out.wav",6);
	CreateDSBuf("resource\\sound\\main.wav",7);
	CreateDSBuf("resource\\sound\\select.wav",8);
	CreateDSBuf("resource\\sound\\click.wav",9);

	//讀取地圖
	readMap();

	srand((unsigned)time(NULL));

	DSBuf[7]->Play(0,0,1);

}

BMFrame::~BMFrame()
{
	for (i=0; i<15; i++)
		if (DDPla[i])
			DDPla[i]->Release();
	if (DDBuf)
		DDBuf->Release();
	if (DDSur)
		DDSur->Release();
	if (DD)
		DD->Release();

	if (DIkb)
		DIkb->Release();
	if (DI)
		DI->Release();

	for(i=0; i<15; i++)
		if (DSBuf[i])
			DSBuf[i]->Release();
	if (DSPri)
		DSPri->Release();
	if (DS)
		DS->Release();
}


BEGIN_MESSAGE_MAP(BMFrame, CFrameWnd)
	//{{AFX_MSG_MAP(BMFrame)
		// NOTE - the ClassWizard will add and remove mapping macros here.
	ON_WM_CREATE()
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// BMFrame message handlers
int BMFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	InitDD();
	InitDS();
	InitDI();
	SetTimer(1,10,NULL);
	return 0;
}


void BMFrame::OnTimer(UINT nIDEvent) 
{
	gametime ++;
	if (gametime == 30000)
		gametime = 0;
	//接收玩家動作
	checkAction();

	switch (gamestate)
	{
	case SINGLE:
		playSingle();    //單人游戲進行中
		break;
	case VERSUS:
		playVersus();    //游戲正在進行中
		break;
	default:
		break;
	}
	
	//繪制圖像
	renderFrame();

	while (1){
		result = DDSur->Flip( NULL , DDFLIP_WAIT );
			
		if ( result==DD_OK)
			break ;
		if ( result==DDERR_SURFACELOST ){
			if (DD->RestoreAllSurfaces()!=DD_OK)
				break;
			CreateDDPla(800,600,"resource\\image\\back.bmp",0);
			CreateDDPla(180,240,"resource\\image\\move.bmp",1);
			ColorKey(1);
			CreateDDPla(200,320,"resource\\image\\thing.bmp",2);
			ColorKey(2);
			CreateDDPla(200,480,"resource\\image\\state.bmp",3);
			ColorKey(3);
			CreateDDPla(320,480,"resource\\image\\over.bmp",4);
			ColorKey(4);
		}
		if (result != DDERR_WASSTILLDRAWING){
	            break;
		}
	}

	CFrameWnd::OnTimer(nIDEvent);
}

void BMFrame::Over()
{

}

void BMFrame::readMap()
{
	FILE *stream;
	if ((stream = fopen( "resource\\map.dat", "r")) == NULL ) 
	{
		MessageBox("讀取地圖失敗!");
		return;
	}
	fread(map, sizeof(char),234, stream);
	fclose(stream);
}

void BMFrame::checkAction()
{
	result = DIkb->GetDeviceState(sizeof(keybuffer),(LPVOID)&keybuffer);
	if (result != DI_OK)
	{
		MessageBox("取得鍵盤狀態失敗!");
		return;
	}

	if (keybuffer[DIK_ESCAPE] & 0x80)	//按下 Esc 鍵
	{
		PostMessage(WM_CLOSE);  //結束程序
	}

	if (keybuffer[DIK_RETURN] & 0x80)	//按下 Esc 鍵
	{
		player[0].alive = true;  //結束程序
		player[1].alive = true;
	}

	if (gamestate == MAINMENU)
	{
		if (keybuffer[DIK_RETURN] & 0x80)	//按下 Enter 鍵
		{
			DSBuf[9]->Play(0,0,0);
			DSBuf[7]->Stop();
			gamestate = SINGLE + menuselect;

			//隨機初始位置
			posP1 = rand()%6;
			player[0].initPos();
			if (menuselect == 1)
			{
				posP2 = posP1;
				posP1 = (posP1+rand()%5+1)%6;
				player[1].initPos();
			}

			DSBuf[0]->Play(0,0,1);
		}
		if ((keybuffer[DIK_UP] & 0x80) && gametime>20)	//按下 上 鍵
		{
			DSBuf[8]->Play(0,0,0);
			menuselect = (menuselect+2)%3;
			gametime = 0;
			menudown = false;
		}
		if ((keybuffer[DIK_DOWN] & 0x80) && gametime>20)	//按下 下 鍵
		{
			DSBuf[8]->Play(0,0,0);
			menuselect = (menuselect+1)%3;
			gametime = 0;
			menudown = true;
		}
	}
	else if (gamestate==SINGLE && player[0].alive)
	{
		//方向判斷
		if (keybuffer[DIK_DOWN] & 0x80)	//按下 下 鍵
		{
			//貼圖選擇
			if (player[0].lastaction == 0)
			{
				player[0].movetime++;
				if (player[0].movetime == 20)
				{
					player[0].movetime = 0;
				}
			}
			else
			{
				player[0].movetime = 0;
				player[0].lastaction = 0;
			}		
			player[0].offsetX = 60 * (player[0].movetime/10+1);

			//位置移動	
			player[0].doMove();
		}
		else if (keybuffer[DIK_UP] & 0x80)	//按下 上 鍵
		{
			//貼圖選擇
			if (player[0].lastaction == 1)
			{
				player[0].movetime++;
				if (player[0].movetime == 20)
				{
					player[0].movetime = 0;
				}
			}
			else
			{
				player[0].movetime = 0;
				player[0].lastaction = 1;
			}		
			player[0].offsetX = 60 * (player[0].movetime/10+1);

			//位置移動	
			player[0].doMove();
		}
		else if (keybuffer[DIK_LEFT] & 0x80)	//按下 左 鍵
		{
			//貼圖選擇
			if (player[0].lastaction == 2)
			{
				player[0].movetime++;
				if (player[0].movetime == 20)
				{
					player[0].movetime = 0;
				}
			}
			else
			{
				player[0].movetime = 0;
				player[0].lastaction = 2;
			}		
			player[0].offsetX = 60 * (player[0].movetime/10+1);

			//位置移動	
			player[0].doMove();
		}
		else if (keybuffer[DIK_RIGHT] & 0x80)	//按下 右 鍵
		{
			//貼圖選擇
			if (player[0].lastaction == 3)
			{
				player[0].movetime++;
				if (player[0].movetime == 20)
				{
					player[0].movetime = 0;
				}
			}
			else
			{
				player[0].movetime = 0;
				player[0].lastaction = 3;
			}		
			player[0].offsetX = 60 * (player[0].movetime/10+1);

			//位置移動
			player[0].doMove();
		}
		else
		{
			player[0].movetime = 0;
			player[0].offsetX = 0;
		}
		player[0].offsetY = 60 * player[0].lastaction;

		if (keybuffer[DIK_SPACE] & 0x80)	//按下 空格 鍵
		{
			i = ((int)player[0].posY+40)/40-1;
			j = ((int)player[0].posX+30)/40-1;

			if (player[0].laytime==0 && player[0].bombcount<player[0].bombsum && map[i][j]>='`')
			{
				player[0].laytime++;
				bomb[bombtotal].index = 0;
				bomb[bombtotal].setStart();
				DSBuf[1]->Play(0,0,0);
				player[0].bombcount ++;
				bombtotal ++;
			}
		}	
	}
	else if (gamestate==VERSUS || gamestate==COORPERATE)
	{
		//1號按鍵
		if (player[0].alive)
		{
			//方向判斷
			if (keybuffer[DIK_S] & 0x80)	//按下 S 鍵
			{
				//貼圖選擇
				if (player[0].lastaction == 0)
				{
					player[0].movetime++;
					if (player[0].movetime == 20)
					{
						player[0].movetime = 0;
					}
				}
				else
				{
					player[0].movetime = 0;
					player[0].lastaction = 0;
				}		
				player[0].offsetX = 60 * (player[0].movetime/10+1);

				//位置移動	
				player[0].doMove();
			}
			else if (keybuffer[DIK_W] & 0x80)	//按下 W 鍵
			{
				//貼圖選擇
				if (player[0].lastaction == 1)
				{
					player[0].movetime++;
					if (player[0].movetime == 20)
					{
						player[0].movetime = 0;
					}
				}
				else
				{
					player[0].movetime = 0;
					player[0].lastaction = 1;
				}		
				player[0].offsetX = 60 * (player[0].movetime/10+1);

				//位置移動	
				player[0].doMove();
			}
			else if (keybuffer[DIK_A] & 0x80)	//按下 A 鍵
			{
				//貼圖選擇
				if (player[0].lastaction == 2)
				{
					player[0].movetime++;
					if (player[0].movetime == 20)
					{
						player[0].movetime = 0;
					}
				}
				else
				{
					player[0].movetime = 0;
					player[0].lastaction = 2;
				}		
				player[0].offsetX = 60 * (player[0].movetime/10+1);

				//位置移動	
				player[0].doMove();
			}
			else if (keybuffer[DIK_D] & 0x80)	//按下 D 鍵
			{
				//貼圖選擇
				if (player[0].lastaction == 3)
				{
					player[0].movetime++;
					if (player[0].movetime == 20)
					{
						player[0].movetime = 0;
					}
				}
				else
				{
					player[0].movetime = 0;
					player[0].lastaction = 3;
				}		
				player[0].offsetX = 60 * (player[0].movetime/10+1);

				//位置移動
				player[0].doMove();
			}
			else
			{
				player[0].movetime = 0;
				player[0].offsetX = 0;
			}
			player[0].offsetY = 60 * player[0].lastaction;

			if (keybuffer[DIK_SPACE] & 0x80)	//按下 空格 鍵
			{
				i = ((int)player[0].posY+40)/40-1;
				j = ((int)player[0].posX+30)/40-1;

				if (player[0].laytime==0 && player[0].bombcount<player[0].bombsum && map[i][j]>='`')
				{
					player[0].laytime++;
					bomb[bombtotal].index = 0;
					bomb[bombtotal].setStart();
					DSBuf[1]->Play(0,0,0);
					player[0].bombcount ++;
					bombtotal ++;
				}
			}	
		}
		//2號按鍵
		if (player[1].alive)
		{
			//方向判斷
			if (keybuffer[DIK_DOWN] & 0x80)	//按下 下 鍵
			{
				//貼圖選擇
				if (player[1].lastaction == 0)
				{
					player[1].movetime++;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩亚洲综合一区二区三区| 亚洲一区二区高清| 久久国产精品露脸对白| 成人高清免费观看| 欧美激情一区二区三区蜜桃视频| 亚洲精品视频免费看| 色8久久精品久久久久久蜜| 欧美精品一区二区蜜臀亚洲| 一区二区三区电影在线播| 精品一区二区影视| 国产欧美日本一区二区三区| 视频在线观看国产精品| 国产成都精品91一区二区三| 欧美韩日一区二区三区| 欧美二区在线观看| 日韩电影在线观看网站| 天堂在线亚洲视频| 欧美mv日韩mv国产网站| 欧美精品1区2区| 91在线观看美女| 91丝袜国产在线播放| 丁香啪啪综合成人亚洲小说| 亚洲高清在线视频| 日韩欧美激情在线| 国产a久久麻豆| 亚洲日本一区二区| 欧美一区二区高清| 国产suv精品一区二区三区| 久久久精品tv| 色呦呦国产精品| 国产成人丝袜美腿| 日韩三级在线免费观看| 亚洲另类色综合网站| 91浏览器在线视频| 久久国产夜色精品鲁鲁99| 国产一区二区三区观看| 肉色丝袜一区二区| 日韩专区中文字幕一区二区| 日韩视频一区在线观看| 成人手机在线视频| 日本成人在线视频网站| 亚洲欧洲精品天堂一级| 精品国产乱码久久久久久闺蜜| 经典三级视频一区| 丰满少妇久久久久久久| 免费在线看一区| 日韩精品国产欧美| 亚洲第一激情av| 亚洲激情一二三区| 一区二区三区毛片| 色天天综合久久久久综合片| 久久成人麻豆午夜电影| 99re成人精品视频| 国产午夜精品久久久久久免费视| 成人免费视频视频在线观看免费 | 欧美无砖专区一中文字| 奇米四色…亚洲| 日韩精品电影在线| 国产精品国产三级国产aⅴ入口| 国产精品视频一二三区 | 成人短视频下载| 日韩中文字幕区一区有砖一区 | 国产日韩欧美制服另类| 久久99久久精品欧美| 亚洲国产综合91精品麻豆| 九九九久久久精品| 精品免费国产二区三区 | 99久久99久久综合| 中文字幕av一区二区三区免费看 | 亚洲高清免费一级二级三级| 欧美激情综合五月色丁香小说| 欧美日韩国产综合久久| 欧美一区二区三区不卡| 欧美伊人久久久久久久久影院| 国产精品久久久久影院亚瑟| 欧美一级艳片视频免费观看| 久久久777精品电影网影网| 日韩精品一区二| 《视频一区视频二区| 依依成人综合视频| 亚洲v中文字幕| 国产成人免费高清| 91色porny蝌蚪| 欧美videos大乳护士334| 国产农村妇女毛片精品久久麻豆| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲天堂2014| 免费久久精品视频| 91色在线porny| 国产东北露脸精品视频| 日韩亚洲欧美中文三级| 久久午夜羞羞影院免费观看| 久久精品男人的天堂| 亚洲国产日产av| 久久国产欧美日韩精品| av在线不卡电影| 欧美一区二区三区系列电影| 国产精品污污网站在线观看| 亚洲国产毛片aaaaa无费看 | 亚洲免费观看高清完整版在线 | 久久在线免费观看| 午夜精品一区在线观看| 国产一区三区三区| 欧美午夜不卡视频| 国产日本亚洲高清| 五月天一区二区| 成人免费福利片| 欧美喷水一区二区| 国产精品网站在线| 麻豆精品一二三| 在线视频你懂得一区| 日韩欧美国产综合| 亚洲免费观看高清完整| 免费人成精品欧美精品| 精品sm捆绑视频| 久久精品综合网| 日韩主播视频在线| 91影院在线免费观看| 日韩亚洲欧美一区| 亚洲激情自拍视频| 国产在线精品一区二区三区不卡 | 成人午夜在线视频| 国产亚洲一本大道中文在线| 欧美午夜一区二区三区 | 国产精品女人毛片| kk眼镜猥琐国模调教系列一区二区| 日韩精品乱码av一区二区| 亚洲欧美激情小说另类| 久久综合九色综合欧美就去吻 | 成熟亚洲日本毛茸茸凸凹| 日韩在线一区二区| 欧美国产一区视频在线观看| 91久久精品国产91性色tv| 成人午夜短视频| 成人免费毛片aaaaa**| 国产成人亚洲精品青草天美| 久久精品99久久久| 久久精品国产99| 国产精品一区二区无线| 美女精品自拍一二三四| 蜜臀精品久久久久久蜜臀| 日本中文在线一区| 日本va欧美va瓶| 极品尤物av久久免费看| 国产精品影视天天线| 国产成人在线视频网站| 成人午夜短视频| 在线观看不卡视频| 色偷偷成人一区二区三区91| 日本伦理一区二区| 日韩美女主播在线视频一区二区三区 | 久久九九久久九九| 综合网在线视频| 亚洲国产成人av网| 精品国产伦一区二区三区免费 | 亚洲美女一区二区三区| 欧美色图12p| 欧美久久一二三四区| 91丨九色丨国产丨porny| 亚洲精品在线一区二区| 亚洲一区二区3| 欧美一区二区成人6969| 国产一区二区三区综合| 中文字幕第一区二区| 在线免费亚洲电影| 五月天婷婷综合| 久久午夜色播影院免费高清| 99热精品一区二区| 午夜精品福利一区二区蜜股av| 日韩一区二区三区观看| 福利一区二区在线| 亚洲一区国产视频| 久久亚洲精华国产精华液| 99在线精品一区二区三区| 午夜精品久久久久久久蜜桃app| 日韩视频在线永久播放| 国产盗摄女厕一区二区三区| 亚洲欧美日韩在线| 日韩欧美高清一区| 91麻豆免费在线观看| 日本成人超碰在线观看| 中文字幕免费一区| 91精品久久久久久久久99蜜臂| 国产精品888| 视频一区二区国产| 国产精品天美传媒| 欧美人妇做爰xxxⅹ性高电影| 国产成人精品亚洲777人妖| 亚洲自拍偷拍欧美| 国产日韩欧美不卡在线| 欧美日本一区二区在线观看| 福利视频网站一区二区三区| 天堂影院一区二区| 亚洲欧洲制服丝袜| 欧美精品一区二区久久婷婷| 欧美三区在线观看| aaa欧美大片| 国产美女视频一区| 奇米一区二区三区av| 一区二区三区在线视频免费观看 |