我是C / C ++的新手。我的应用程序的一部分似乎不像我想要的那样工作,但我无法理解为什么。
我要做的是当4键处于关闭状态时,我希望它能够执行“空闲”状态。功能。我希望空闲功能有2个结果。 如果向上或向下或向左或向右或LMouse AND RButton然后执行“运动”旋转操作'代码只是执行标准的空闲功能。 但是在我的代码中,它会在它向下循环但是move()只会返回0
我已经搞砸了一段时间并试图在谷歌上寻找答案,但我不明白为什么。
这是我的代码段:
int moving()
{
int u = GetAsyncKeyState(VK_UP);
int d = GetAsyncKeyState(VK_DOWN);
int l = GetAsyncKeyState(VK_LEFT);
int r = GetAsyncKeyState(VK_RIGHT);
int mr = GetAsyncKeyState(VK_RBUTTON);
int ml = GetAsyncKeyState(VK_LBUTTON);
if(u == 1 || d == 1 || l == 1 || r == 1 || mr == 1 && ml == 1)
{
return 1;
}
}
void idle()
{
cout << "moving = " << moving() << endl;
if(moving() == 1)
{
cout << "Movement rotation operating." << endl;
}
else
{
cout << "This is the idle statement" << endl;
}
}
int main()
{
while(1)
{
if(GetAsyncKeyState('4'))
{
cout << "4 Pressed" << endl;
idle();
}
}
}
提前谢谢。
答案 0 :(得分:1)
确定按钮组合的逻辑需要一组额外的括号。
if(u == 1 || d == 1 || l == 1 || r == 1 || (mr == 1 && ml == 1))
此外,1
将评估为true
,因此您可以说
if(u || d || l || r || (mr && ml))
您还可以让该函数返回bool
,因为这真的是您所追求的。
bool moving()
{
// ...
// code for getting button states
// ...
return (u || d || l || r || (mr && ml))
}