所以我成功地創建了一個貪吃蛇遊戲,除了一件我不知道如何解決的小事情之外,它的功能正常。讓我試着解釋一下。需要幫助修復貪吃蛇遊戲中的一個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