我现在正在编程一个蛇程序。我在运动中有一点问题。我的方向按钮是' W' ' A' ' S' ' d'纽扣。 我有一个 方向 变量,类型是char。我从键盘上读了一个按钮, 方向 得到一个值,如果我从WASD中击中一个然后进入,则蛇从4个方向向前迈出一步。我想修复输入问题。 我想,我的蛇不停地移动,并且不等待进入。 我想以这样的方式为 方向 制作一个计时器,如果我没有在X毫秒内击中一个角色,那么蛇继续进入 方向的最后一个值的方向 。
如何制作这个计时器?还是其他任何想法?
答案 0 :(得分:0)
不幸的是,在不知道语言的情况下,如果使用SDL,XNA,Monogame等SDK,我们无能为力。我建议尝试搜索处理键盘事件。在XNA游戏运行时,它调用Draw,Update和Event。通常,键盘事件的处理方式如下:
//...
public void Update()
{
if(Keyboard.GetStates().IsKeyDown(Keys.W))
{
Player.ChangeDirection(Direction.UP);
}
//...
Player.Move();
}
Player.ChangeDirection(Direction)可能会改变蛇的移动方式。每次都在Player.Move()命令中完成移动。
编辑:在C ++中,您使用的是SDL,Allegro,DirectX等任何SDK吗?
答案 1 :(得分:0)
这取决于你编程的语言:-)。
例如。如果你有sleep()
或delay()
函数,你不需要任何特殊的定时器,一个简单的无限循环就可以完成这项工作。
重要的是你如何阅读键盘。您可以在按下按钮(非阻塞)或等待按钮时按下它们(阻塞)。在你的情况下,你正在阅读整行 - 这就是它等待输入的原因。
不确定你的编程语言是什么,但这个伪代码可以解释一下。 keyPressed()
和readKey()
是一些虚构的库函数,您需要以您的语言找到它。
while (true) {
if (keyPressed()) {
direction = readKey();
}
move(direction);
sleep(1);
}