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

📄 mydinput.cpp

📁 坦克大战的源代码~做的很好~很适合研究~~不错~
💻 CPP
字号:
// MyDInput.cpp: implementation of the MyDInput class.
//
//////////////////////////////////////////////////////////////////////

#include "MyDInput.h"
#include "Player.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
POINT g_mousepoint;  //鼠标坐标点
int   g_MoveRight,g_MoveDown;
bool  g_move;
extern  CPlayer player;
extern  bool    NewGame;
extern  bool    ShowMainMenu;
extern  bool    ShowStage;
extern  short   MainMenuSelect;
extern  bool    SetPause;
extern   bool   StartGame1,StartGame2;
extern  bool    DrawGame;
extern  bool    playsound[10];

MyDInput::MyDInput()
{

}

MyDInput::~MyDInput()
{
	pDI->Release();
    pDKB->Release();
    pDMO->Release();
}
bool MyDInput::InitDinput(HINSTANCE hinst,HWND ghWnd)
{
//=====================建立DirectInput对象=========================
//HINSTANCE hinst=AfxGetInstanceHandle();
result=DirectInput8Create(hinst,DIRECTINPUT_VERSION,
                IID_IDirectInput8, (void**)&pDI,NULL);  //建立DirectInput对象
if (result != DI_OK)
{MessageBox(GetFocus(),"建立DirectInput对象失败!","错误!",MB_OK|MB_ICONHAND);return false;}
//====================建立键盘输入设备对象=============================
result=pDI->CreateDevice(GUID_SysKeyboard,&pDKB,NULL);
if (result != DI_OK)
{MessageBox(GetFocus(),"建立键盘输入设备失败!","错误!",MB_OK|MB_ICONHAND);return false;}
//====================建立鼠标输入设备对象=============================
result=pDI->CreateDevice(GUID_SysMouse,&pDMO,NULL);
if (result != DI_OK)
{MessageBox(GetFocus(),"建立鼠标输入设备失败!","错误!",MB_OK|MB_ICONHAND);return false;}
//=====================设置键盘数据格式===================================
result=pDKB->SetDataFormat(&c_dfDIKeyboard);
if (result != DI_OK)
{MessageBox(GetFocus(),"设置键盘数据格式失败!","错误!",MB_OK|MB_ICONHAND);return false;}
//=====================设置鼠标数据格式===================================
result=pDMO->SetDataFormat(&c_dfDIMouse2);
if (result != DI_OK)
{MessageBox(GetFocus(),"设置鼠标数据格式失败!","错误!",MB_OK|MB_ICONHAND);return false;}
//=====================设置程序协调层级================================
result=pDKB->SetCooperativeLevel(ghWnd,DISCL_BACKGROUND| DISCL_NONEXCLUSIVE);
if (result != DI_OK)
{MessageBox(GetFocus(),"设置程序协调层级失败!","错误!",MB_OK|MB_ICONHAND);return false;}
//====================取得输入设备的控制权=============================
result=pDKB->Acquire();
if (result != DI_OK)
{MessageBox(GetFocus(),"取得键盘输入设备的控制权失败!","错误!",MB_OK|MB_ICONHAND);return false;}
result=pDMO->Acquire();
if (result != DI_OK)
{MessageBox(GetFocus(),"取得鼠标输入设备的控制权失败!","错误!",MB_OK|MB_ICONHAND);return false;}
	
    return true;
}

bool MyDInput::GetKey()
{
    result = pDKB->GetDeviceState(sizeof(buffer),(LPVOID)&buffer);   
	if(result != DI_OK)
	{
		MessageBox(GetFocus(),"取得键盘状态失败!","错误!",MB_OK|MB_ICONHAND);
	    return false;
	}
    result = pDMO->GetDeviceState(sizeof(MState),(LPVOID)&MState);   
	if(result != DI_OK)
	{
		MessageBox(GetFocus(),"取得鼠标状态失败!","错误!",MB_OK|MB_ICONHAND);
	    return false;
	}
//捕获键盘
    if(buffer[DIK_SPACE] & 0x80 ){player.fire=true;}
	else{player.fire=false;}
    if(buffer[DIK_ESCAPE] & 0x80 )
	{
        if(!ShowMainMenu)
		{
			playsound[0]=true;
		    ShowStage=false;
			NewGame=false;
			ShowMainMenu=true;
			MainMenuSelect=0;
			SetPause=false;
			StartGame1=false;
			StartGame2=false;
			DrawGame=false;
		}
	}
    if(buffer[DIK_RETURN] & 0x80 )
	{		
		if(StartGame1 || StartGame2) //游戏中
		{
			if(!SetPause)
			{
				NewGame=false;
				ShowMainMenu=false;
				SetPause=true;
				DrawGame=true;
			}
			else
			{
				NewGame=false;
				ShowMainMenu=false;
				SetPause=false;
				DrawGame=true;
			}
		}
		if(ShowMainMenu && MainMenuSelect==0) //在菜单
		{
			playsound[2]=true;
            playsound[0]=false;
			ShowStage=true;
			NewGame=true;
			ShowMainMenu=false;
			SetPause=false;
			StartGame1=false;
			StartGame2=false;
			DrawGame=false;
         //   playsound[2]=true;
		}
		else if(ShowMainMenu && MainMenuSelect==32)
		{
			playsound[2]=true;
			playsound[0]=false;
			ShowStage=true;
			NewGame=true;
			ShowMainMenu=false;
			SetPause=false;
			StartGame1=false;
			StartGame2=false;
			DrawGame=false;
		//	playsound[2]=true;
		}
		else if(MainMenuSelect==64)
		{PostQuitMessage( NULL );}

        Sleep(500);
	}
	if(buffer[DIK_W] & 0x80 )
	{
        player.way=3;
		player.MoveStop=false;
		g_move=true;
		if(ShowMainMenu)
		{
			playsound[1]=true;
			if(MainMenuSelect==0){MainMenuSelect=0;}
            else
			{			
				MainMenuSelect-=32;
				Sleep(100);
			}
		}
	}
	else if(buffer[DIK_A] & 0x80 )
	{
        player.way=4;
		g_move=true;
	}
	else if(buffer[DIK_S] & 0x80 )
	{
        player.way=1;
		player.MoveStop=false;
		g_move=true;
		if(ShowMainMenu)
		{
			playsound[1]=true;
			if(MainMenuSelect==64){MainMenuSelect=64;}
            else
			{
				MainMenuSelect+=32;
				Sleep(100);
			}
			
		}
	}
	else if(buffer[DIK_D] & 0x80 )
	{
        player.way=2;
		g_move=true;
	}
	else if(buffer[DIK_UP] & 0x80 )
	{
        player.way=3;
		g_move=true;
		if(ShowMainMenu)
		{
			playsound[1]=true;
			if(MainMenuSelect==0){MainMenuSelect=0;}
			else{MainMenuSelect-=32;Sleep(100);}
		}	
	}
	else if(buffer[DIK_LEFT] & 0x80 )
	{
        player.way=4;
		g_move=true;
	}
	else if(buffer[DIK_DOWN] & 0x80 )
	{
        player.way=1;
		g_move=true;
		if(ShowMainMenu)
		{
			playsound[1]=true;
			if(MainMenuSelect==64){MainMenuSelect=64;}
            else{MainMenuSelect+=32;Sleep(100);}	
		}
	}
	else if(buffer[DIK_RIGHT] & 0x80 )
	{
        player.way=2;
		g_move=true;
	}
	else{player.MoveStop=true,g_move=false;}
//捕获鼠标
	if(MState.rgbButtons[0] & 0x80 )
	{
//		MessageBox(GetFocus(),"按下鼠标左键!","通知!",MB_OK|MB_ICONINFORMATION);

	}
	if(MState.rgbButtons[1] & 0x80 )
	{
		//MessageBox(GetFocus(),"按下鼠标右键!","通知!",MB_OK|MB_ICONINFORMATION);

	}
	x=MState.lX;    //鼠标坐标
	y=MState.lY;



	return true;	
}

⌨️ 快捷键说明

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