如何修复我的蛇程序中的运动?
How to fix movement in my snake program?
我正在编写蛇程序。我在运动中有一点问题。我的方向按钮是 'W' 'A' 'S' 'D' 按钮。
我有一个 direction 变量,类型是 char。我从键盘读取一个按钮,direction 得到一个值,如果我从 WASD 按下一个,蛇从 4 个方向迈出一步然后输入。我想解决输入问题。
我想要我的蛇不断移动,而不是等待进入。
我想为 direction 制作一个定时器,如果我没有在 X 毫秒内击中一个角色,那么蛇会继续向direction.
最后一个值的方向移动
如何制作这个计时器?或者有什么其他想法?
不幸的是,在不懂语言的情况下,如果使用 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(方向)可能会改变蛇的移动方式。每次都在 Player.Move() 命令中完成移动。
编辑:在 C++ 中,您是否使用任何 SDK,如 SDL、Allegro、DirectX 等?
这取决于您使用的编程语言:-)。
例如。如果您有可用的 sleep()
或 delay()
函数,则不需要任何特殊计时器,一个简单的无限循环即可完成工作。
重要的是你如何阅读键盘。您可以在按钮被按下时读取它们(非阻塞)或等待它们直到它们被按下(阻塞)。在您的情况下,您正在阅读整行 - 这就是它等待输入的原因。
不确定你的编程语言是什么,但这个伪代码可以解释一下。 keyPressed()
和 readKey()
是一些虚构的库函数,您需要用您的语言找到它们。
while (true) {
if (keyPressed()) {
direction = readKey();
}
move(direction);
sleep(1);
}
我正在编写蛇程序。我在运动中有一点问题。我的方向按钮是 'W' 'A' 'S' 'D' 按钮。 我有一个 direction 变量,类型是 char。我从键盘读取一个按钮,direction 得到一个值,如果我从 WASD 按下一个,蛇从 4 个方向迈出一步然后输入。我想解决输入问题。 我想要我的蛇不断移动,而不是等待进入。 我想为 direction 制作一个定时器,如果我没有在 X 毫秒内击中一个角色,那么蛇会继续向direction.
最后一个值的方向移动如何制作这个计时器?或者有什么其他想法?
不幸的是,在不懂语言的情况下,如果使用 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(方向)可能会改变蛇的移动方式。每次都在 Player.Move() 命令中完成移动。
编辑:在 C++ 中,您是否使用任何 SDK,如 SDL、Allegro、DirectX 等?
这取决于您使用的编程语言:-)。
例如。如果您有可用的 sleep()
或 delay()
函数,则不需要任何特殊计时器,一个简单的无限循环即可完成工作。
重要的是你如何阅读键盘。您可以在按钮被按下时读取它们(非阻塞)或等待它们直到它们被按下(阻塞)。在您的情况下,您正在阅读整行 - 这就是它等待输入的原因。
不确定你的编程语言是什么,但这个伪代码可以解释一下。 keyPressed()
和 readKey()
是一些虚构的库函数,您需要用您的语言找到它们。
while (true) {
if (keyPressed()) {
direction = readKey();
}
move(direction);
sleep(1);
}