我正在使用C#进行Snake游戏,但我的密钥出现故障。
我正在按照此处找到的确切代码进行操作。 http://codesmesh.com/snake-game-in-c/ 我得到的错误是......例如,如果我要走下去,如果我在同一时间向右和向上按压,我基本上将它按在一起,蛇就会上升并走进自己的身体,自杀
这是我的代码中的keydown部分。
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
//Space is just to restart the form.
if (e.KeyData == Keys.Space)
{
timer1.Enabled = true;
codesmeshlabel.Text= "";
spaceBarLabel.Text = "";
down = false;
up = false;
left = false;
right = true;
}
if (e.KeyData == Keys.Down && up == false)
{
down = true;
up = false;
right = false;
left = false;
}
if (e.KeyData == Keys.Up && down == false)
{
down = false;
up = true;
right = false;
left = false;
}
if (e.KeyData == Keys.Left && right == false)
{
down = false;
up = false;
right = false;
left = true;
}
if (e.KeyData == Keys.Right && left == false)
{
down = false;
up = false;
right = true;
left = false;
}
}
答案 0 :(得分:2)
这听起来好像你正在改变你的蛇向右行进的方向,然后在蛇再次移动之前将它设置为“向上”。
在代码的某处,我假设您有一个游戏循环,每次更新屏幕(无论多长时间)。为防止这种情况发生,您需要更改设计,以便在游戏接受方向更改(key.left / right / up / down)后,等待屏幕更新一次以接受第二个方向更改。这应该可以解决你的错误:)
正如m.t.bennett指出的另一个选择是检查每个按键以查看它是否与当前行程的方向相反,如果是,则忽略它。可能更优雅。