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

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

?? input.cpp

?? 一個用c++寫的很棒的坦克大戰游戲源代碼
?? CPP
字號:
// Input.cpp: implementation of the CDirectInput class.
//
//////////////////////////////////////////////////////////////////////

#include "Input.h"

#define SAFE_RELEASE(x)		if(x) { x->Release(); x = NULL; }

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CDirectInput::CDirectInput()
{
	m_pDI = NULL;
	m_pdevKeyboard = NULL;
	m_pdevJoystick = NULL;
}

CDirectInput::~CDirectInput()
{
	Destroy();
}


BOOL CDirectInput::Create( HINSTANCE hInst, HWND hWnd )
{
	HRESULT hr;

	// Create DirectInput object
	hr = DirectInputCreate( hInst, DIRECTINPUT_VERSION, &m_pDI, NULL );
	if( FAILED(hr) )
		return FALSE;

	// Initialize keyboard...
	hr = m_pDI->CreateDevice( GUID_SysKeyboard, &m_pdevKeyboard, NULL );
	if( FAILED(hr) )
	{
		Destroy();
		return FALSE;
	}

	m_pdevKeyboard->SetDataFormat( &c_dfDIKeyboard );

	m_pdevKeyboard->SetCooperativeLevel( hWnd, 
			DISCL_FOREGROUND | DISCL_NONEXCLUSIVE );

	// acquire keyboard
	m_pdevKeyboard->Acquire();


	
	// enum joystick devices
	m_pDI->EnumDevices( DIDEVTYPE_JOYSTICK, EnumJoystickCB,
			(LPVOID)this, DIEDFL_ATTACHEDONLY );

	if( m_pdevJoystick )
	{
		m_pdevJoystick->SetDataFormat( &c_dfDIJoystick );
		
		m_pdevJoystick->SetCooperativeLevel( hWnd,
			DISCL_FOREGROUND | DISCL_EXCLUSIVE );
		
		// Set the range of the joystick axes tp [-1000,+1000]
		DIPROPRANGE diprg; 
		diprg.diph.dwSize       = sizeof(DIPROPRANGE); 
		diprg.diph.dwHeaderSize = sizeof(DIPROPHEADER); 
		diprg.diph.dwHow        = DIPH_BYOFFSET; 
		diprg.lMin              = -10; 
		diprg.lMax              = +10; 
		
		diprg.diph.dwObj = DIJOFS_X;    // Set the x-axis range
		m_pdevJoystick->SetProperty( DIPROP_RANGE, &diprg.diph );
		
		diprg.diph.dwObj = DIJOFS_Y;    // Set the y-axis range
		m_pdevJoystick->SetProperty( DIPROP_RANGE, &diprg.diph );
		
		// Set the dead zone for the joystick axes (because many joysticks
		// aren't perfectly calibrated to be zero when centered).
		DIPROPDWORD dipdw; 
		ZeroMemory( &dipdw, sizeof(dipdw) );
		dipdw.diph.dwSize       = sizeof(DIPROPDWORD); 
		dipdw.diph.dwHeaderSize = sizeof(DIPROPHEADER); 
		dipdw.diph.dwHow        = DIPH_DEVICE; 
		dipdw.dwData            = 9000;
		
		dipdw.diph.dwObj = DIJOFS_X;    // Set the x-axis deadzone
		m_pdevJoystick->SetProperty( DIPROP_DEADZONE, &dipdw.diph );
		
		dipdw.diph.dwObj = DIJOFS_Y;    // Set the y-axis deadzone
		m_pdevJoystick->SetProperty( DIPROP_DEADZONE, &dipdw.diph );
		
		// acquire joystick
		m_pdevJoystick->Acquire();
	}

	return TRUE;
}


void CDirectInput::Destroy()
{
	if( m_pdevKeyboard )
		m_pdevKeyboard->Unacquire();
	if( m_pdevJoystick )
		m_pdevJoystick->Unacquire();
	SAFE_RELEASE( m_pdevKeyboard );
	SAFE_RELEASE( m_pdevJoystick );
	SAFE_RELEASE( m_pDI );
}


BOOL CDirectInput::Acquire()
{
	if( !m_pdevKeyboard || 
		FAILED(m_pdevKeyboard->Acquire()) )
		return FALSE;

	if( m_pdevJoystick )
		m_pdevJoystick->Acquire();
	
	return TRUE;
}


BOOL CDirectInput::GetKey( WORD& input1, WORD& input2 )
{
#define KEYDOWN(key)	(buffer[key] & 0x80)
	
	// Read keyboard data...
	HRESULT hr;
	char buffer[256];

	// We have not read any data yet
	input1 = input2 = 0;

	hr = m_pdevKeyboard->GetDeviceState( sizeof(buffer), &buffer );
	if( FAILED(hr) )
	{
		if( hr == DIERR_INPUTLOST )
			hr = Acquire();
		
		return FALSE;
	}

	if( KEYDOWN( DIK_UP ) )
		input1 |= KEY_UP;
	else if( KEYDOWN( DIK_DOWN ) )
		input1 |= KEY_DOWN;
	else if( KEYDOWN( DIK_LEFT ) )
		input1 |= KEY_LEFT;
	else if( KEYDOWN( DIK_RIGHT ) )
		input1 |= KEY_RIGHT;
//	if( KEYDOWN( DIK_NUMPAD0 ) )
	if( KEYDOWN( DIK_SPACE ) )
	    input1 |= KEY_FIRE;

	if( KEYDOWN( DIK_E ) )
		input2 |= KEY_UP;
	else if( KEYDOWN( DIK_D ) )
		input2 |= KEY_DOWN;
	else if( KEYDOWN( DIK_S ) )
		input2 |= KEY_LEFT;
	else if( KEYDOWN( DIK_F ) )
		input2 |= KEY_RIGHT;
	if( KEYDOWN( DIK_SPACE ) )
		input2 |= KEY_FIRE;


	if( m_pdevJoystick )
	{
		DIJOYSTATE	js;
		
		// poll the joystick to read the current state
		m_pdevJoystick->Poll();
		
		// get data from the joystick
		hr = m_pdevJoystick->GetDeviceState( sizeof(js), &js );
		if( FAILED(hr) )
		{
			// did the read fail because we lost input for some reason? 
			// if so, then attempt to reacquire. If the second acquire 
			// fails, then the error from GetDeviceData will be 
			// DIERR_NOTACQUIRED, so we won't get stuck an infinite loop.
			if( hr = DIERR_INPUTLOST )
				hr = Acquire();
			
			return FALSE;
		}

		if( js.lX < 0 )
			input1 |= KEY_LEFT;
		else if( js.lX > 0 )
			input1 |= KEY_RIGHT;
		else if( js.lY < 0 )
			input1 |= KEY_UP;
		else if( js.lY > 0 )
			input1 |= KEY_DOWN;
		if( js.rgbButtons[0] & 0x80 )
			input1 |= KEY_FIRE;
	}

	return TRUE;
}



BOOL CALLBACK EnumJoystickCB( LPCDIDEVICEINSTANCE pdinst, 
							   LPVOID pvRef )
{
	CDirectInput* p = (CDirectInput*)pvRef;
	LPDIRECTINPUTDEVICE pdev;

	if( FAILED(p->m_pDI->CreateDevice( pdinst->guidInstance, &pdev, NULL)) )
		return DIENUM_CONTINUE;

	pdev->QueryInterface( IID_IDirectInputDevice2, (LPVOID *)&p->m_pdevJoystick );
	return DIENUM_STOP;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美视频在线| 在线观看国产日韩| 日韩精品一区第一页| 又紧又大又爽精品一区二区| 亚洲国产电影在线观看| 久久久五月婷婷| 国产欧美一区在线| 欧美高清在线精品一区| 国产精品伦一区二区三级视频| 久久女同性恋中文字幕| 国产欧美一区二区在线| 欧美国产视频在线| 18欧美乱大交hd1984| 亚洲免费三区一区二区| 亚洲高清免费在线| 久久精品国产久精国产爱| 韩国精品主播一区二区在线观看 | 成人动漫中文字幕| 成人免费的视频| 91成人免费在线| 91精品在线麻豆| 国产日产欧美精品一区二区三区| 久久免费视频一区| 综合久久一区二区三区| 亚洲成人先锋电影| 久久激情五月激情| 99久久精品情趣| 欧美丰满嫩嫩电影| 久久精品亚洲精品国产欧美kt∨ | 欧美色偷偷大香| 日韩欧美的一区二区| 亚洲国产成人午夜在线一区| 亚洲最大色网站| 精品在线免费观看| 91美女在线视频| 日韩精品中文字幕一区| 亚洲欧洲精品成人久久奇米网| 亚洲一区二区三区精品在线| 黑人精品欧美一区二区蜜桃| 91免费看片在线观看| 欧美大片拔萝卜| 国产精品福利一区| 激情综合色播激情啊| 91免费视频观看| 国产亚洲精久久久久久| 三级不卡在线观看| av电影在线观看一区| 日韩精品一区二区三区中文不卡 | 最新高清无码专区| 美女视频黄 久久| 日本韩国欧美在线| 久久精品亚洲乱码伦伦中文| 日本人妖一区二区| 日本黄色一区二区| 欧美国产激情二区三区| 精品一区二区综合| 欧美人成免费网站| 亚洲一级电影视频| 色视频一区二区| 中文字幕五月欧美| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 亚洲六月丁香色婷婷综合久久| 国内精品写真在线观看 | 激情五月婷婷综合| 7799精品视频| 视频在线观看91| 色狠狠色狠狠综合| ...xxx性欧美| hitomi一区二区三区精品| 国产三级欧美三级| 国产精品一区二区无线| 欧美大黄免费观看| 国产一区二区三区电影在线观看 | 在线视频中文字幕一区二区| 国产精品久久久久影视| 东方欧美亚洲色图在线| 国产日产欧美一区二区视频| 国产精品18久久久久久久久| 2021中文字幕一区亚洲| 韩国三级中文字幕hd久久精品| 日韩美女在线视频| 国产精品一区二区在线观看不卡| 国产丝袜在线精品| 成人看片黄a免费看在线| 国产女人aaa级久久久级 | 中文字幕永久在线不卡| 成人av资源网站| 亚洲精品高清在线| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 亚洲欧美一区二区三区孕妇| 色88888久久久久久影院野外| 亚洲一二三区在线观看| 欧美日韩1区2区| 黄色精品一二区| 欧美国产综合色视频| 色综合久久综合| 一区二区三区四区高清精品免费观看 | 麻豆精品新av中文字幕| 久久综合久久久久88| 懂色中文一区二区在线播放| 亚洲乱码一区二区三区在线观看| 在线观看区一区二| 免费成人结看片| 中文久久乱码一区二区| 欧美在线999| 激情偷乱视频一区二区三区| 国产日产欧美一区二区三区| 在线观看视频91| 国产米奇在线777精品观看| 国产精品乱码久久久久久| 欧美三级午夜理伦三级中视频| 免费欧美日韩国产三级电影| 欧美激情一区二区三区在线| 欧美三级欧美一级| 国产91精品精华液一区二区三区| 亚洲视频在线观看一区| 日韩视频在线永久播放| 不卡视频在线观看| 蜜臀av国产精品久久久久| 亚洲欧美国产毛片在线| 欧美va亚洲va香蕉在线| 欧洲激情一区二区| 成人免费观看av| 精品一区二区精品| 日韩在线一区二区| 国产精品沙发午睡系列990531| 欧美日韩精品免费| 91女厕偷拍女厕偷拍高清| 国产综合久久久久影院| 亚洲一区二区三区四区在线 | 国产欧美一区二区精品性色超碰| 欧美日韩欧美一区二区| 成人午夜免费视频| 国产一区二区三区黄视频 | 久久欧美一区二区| 91.com视频| 欧美日韩国产另类一区| 91在线国产福利| 懂色av一区二区三区免费看| 蜜桃av一区二区在线观看| 亚洲高清三级视频| 亚洲一卡二卡三卡四卡五卡| 亚洲人成网站在线| 中文字幕一区二区不卡| 中文字幕电影一区| 中文在线免费一区三区高中清不卡| 日韩精品一区二区三区蜜臀| 欧美精品黑人性xxxx| 欧美日高清视频| 欧美高清激情brazzers| 欧美另类变人与禽xxxxx| 欧美日韩大陆一区二区| 欧美精品色综合| 91精品国产综合久久精品 | 日本一区二区高清| 久久久久久99久久久精品网站| 欧美www视频| 久久久精品人体av艺术| 久久久久久久一区| 国产人久久人人人人爽| 国产精品五月天| 亚洲国产激情av| 亚洲另类在线制服丝袜| 亚洲成av人片www| 免费观看成人av| 国产揄拍国内精品对白| 国产成人自拍高清视频在线免费播放| 国产一区二区三区免费播放| 国产精品一区二区久久不卡| 国产iv一区二区三区| 91蝌蚪porny| 欧美日韩高清影院| 精品国产免费一区二区三区四区| 久久久亚洲欧洲日产国码αv| 国产精品无圣光一区二区| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲美女视频一区| 亚洲va在线va天堂| 久久97超碰国产精品超碰| 国产成人精品亚洲777人妖| 色综合天天综合网国产成人综合天| 色天天综合色天天久久| 日韩视频免费观看高清完整版 | 91在线视频在线| 欧美人与性动xxxx| 久久久国产精华| 一区二区三区欧美久久| 狠狠色综合色综合网络| 成人一区二区在线观看| 884aa四虎影成人精品一区| 国产午夜精品久久久久久久| 亚洲国产精品久久不卡毛片| 激情五月婷婷综合网| 91丨国产丨九色丨pron| 欧美一区2区视频在线观看| 亚洲日本青草视频在线怡红院| 日韩高清在线不卡| 9i看片成人免费高清| 久久综合99re88久久爱| 亚洲国产日韩精品|