所以我成功地创建了一个贪吃蛇游戏,除了一件我不知道如何解决的小事情之外,它的功能正常。让我试着解释一下。需要帮助修复贪吃蛇游戏中的一个Bug
因此,游戏在定时器中工作,定时器的每个刻度表示在指定方向上移动蛇的每个块。它的工作原理是,如果你向右移动,你不能左移(因为那时头部会与身体相交,你会失去)。其他所有可能的方向也是如此。有一个方向变量指定蛇的当前方向。所以问题是,当你按下左键时,它会检查方向是否设置正确,如果是的话,什么都不会发生。但是如果你在同样的时间间隔内按下下键然后按左键,那么蛇会向左移动,你会失去。这是处理表单的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,如果你想体验错误的第一手。感谢您的任何帮助!
你可能想看看[这篇文章如何处理游戏中的时间](http://stackoverflow.com/questions/17440555/using-timer-and-game-loop/17440807#17440807),因为它与普通的Windows窗体编程有很大不同。有一个传统的计时器会导致很多问题。 – nvoigt 2014-09-24 18:20:27
@nvoigt这篇文章很有趣也很有帮助,我不知道这就是游戏的功能。 – Minato 2014-09-24 18:28:23