按下代码按钮

Button held down by code

本文关键字:按钮 代码      更新时间:2023-10-16

我正在写一款游戏,我试图让一个人移动与箭头键。

我有这个代码

if (Key_Down(DIK_DOWN))
{movedown(player)}

这是可行的,但因为我希望玩家每次按下按键都要走四步,所以我创建了一个动画循环。所以玩家不能再输入任何移动命令,直到动画结束,他们已经采取了四个步骤,我的代码如下。

if(player.move == false)
{
if (Key_Down(DIK_DOWN))
{movedown(player)}
}

问题是,现在一旦按钮被按下,程序就像按住按钮一样,玩家一直移动,直到另一个方向被按下。

谁能解释一下外循环对代码做了什么并修复这个问题?

它是在visual c++ 2005和直接x . 9中编写的。编辑:

如果我删除外部循环,那么按钮按下只注册一次,所以我不认为这是movedown函数

只需跟踪变量中的keystate即可。你可以重置一个移动计数器。像这样,结合两者:

int MovingDown = 0;
...
if (!Key_Down(DIK_DOWN)) MovingDown = 0;
else if (MovingDown < 4) {
    MovingDown++;
    movedown(player);
}

在没有看到更多代码库的情况下很难判断,但我猜你没有在移动玩家后重新设置player.move。你有没有试过在那里设置一些断点来查看正在调用什么以及为什么调用?

如果你删除if(player.move == false)线它有同样的问题吗?..或者你在其他地方做了改变?如果你能发布更多的代码库,比如整个movedown函数和其他任何交互(例如动画代码),它将帮助我们帮助你…

[Edit]是一个宏吗?也许你会因此产生一些奇怪的副作用?如果没有,应该在函数调用后加一个分号。

KEY_DOWN返回什么?这是一个API调用吗?尝试测试您期望返回的确切值?