direct模仿别人的一个坦克大战不知道为什么玩家动不了,求大神搭救!!

luhaozi 2012-06-03 01:54:07
因为文件比较多,能帮忙的大神留个邮箱,我把程序发过去。

具体问题我怀疑大概是directinput里面的getkey()函数没能修改键值input,代码如下:

BOOL CDirectInput::GetKey( WORD& input )
{
#define KEYDOWN(key) (buffer[key] & 0x80)

HRESULT hr;
char buffer[256];

input = 0;

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

return FALSE;
}

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

return TRUE;
}

所以在玩家类里面的键盘处理函数异常

BOOL CPlayer::ProcessInput( WORD input, DWORD time )
{
DIRECTION dir;
if( input & KEY_UP )
dir = DIR_UP;
else if( input & KEY_DOWN )
dir = DIR_DOWN;
else if( input & KEY_LEFT )
dir = DIR_LEFT;
else if( input & KEY_RIGHT )
dir = DIR_RIGHT;

if( input & KEY_DIRECTION )
{
if( m_dir == dir )
Move();
else
ChangeDirection( dir );
}

if( input & KEY_FIRE )
return Fire();

return FALSE;
}


这只是我个人猜测,不知道对不对,但我找不到错误,求大神搭救啊!!!
...全文
83 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
luhaozi 2012-06-03
  • 打赏
  • 举报
回复
我已经把程序放到邮箱daimagongxiang@163.com上面去了,密码是753951,求大神上去看看解救!!!

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧