gpt4 book ai didi

c# - 需要帮助修复贪吃蛇游戏中的错误

转载 作者:行者123 更新时间:2023-11-30 16:10:19 25 4
gpt4 key购买 nike

因此,我成功地创建了一款贪吃蛇游戏,除了有一点我不知道如何解决的小问题外,它运行良好。让我试着解释一下。

所以游戏在计时器上运行,计时器的每个滴答声都意味着在指定方向上移动蛇的每个 block 。它的工作原理是,如果你向右移动,你就不能向左移动(因为那样头部会与 body 相交,你就会迷路)。所有其他可能的方向也是如此。有一个方向变量指定蛇的当前方向。所以问题是当你按下左键时,它会检查方向是否设置为右,如果是,则什么也不会发生。但是如果你在相同的时间间隔内同时按下下键和左键,那么蛇会向左移动,你就输了。下面是处理表单的 KeyDown 事件的代码。

    private void frmMain_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyData)
{
case Keys.Enter:
if (lblMenu.Visible)
{
lblMenu.Visible = false;
LoadSettings();
gameLoop.Start();
}
break;
case Keys.Space:
if (!lblMenu.Visible)
gameLoop.Enabled = (gameLoop.Enabled) ? false : true;
break;
case Keys.S:
using (frmSettings f = new frmSettings())
{
f.ShowDialog(this);
}
break;
case Keys.Right:
if (direction != Direction.Left)
direction = Direction.Right;
break;
case Keys.Down:
if (direction != Direction.Up)
direction = Direction.Down;
break;
case Keys.Left:
if (direction != Direction.Right)
direction = Direction.Left;
break;
case Keys.Up:
if (direction != Direction.Down)
direction = Direction.Up;
break;
}
}

这是一个 download如果您想亲 body 验该错误,请进入游戏。感谢您的帮助!

最佳答案

你拥有的其实是一个“特征”。您希望能够向下然后向左移动,但您是在计时器滴答声中执行此操作,从而导致“错误”。

这意味着您需要等待改变方向。您的代码变为:

if (direction != Direction.Right)
intendedDirection = Direction.Left;

...

OnTimerTick()
{
...
direction = intendedDirection;
}

现在,您可以按任意数量的键(有效),最后一个键将在计时器滴答时生效,这将允许下一个按键(左键)正常工作。

关于c# - 需要帮助修复贪吃蛇游戏中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26023563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com