我正在C#上做一个蛇游戏,但我的钥匙出了问题。
我在遵循这里找到的确切密码。http://codesmesh.com/snake-game-in-c/我得到的错误是.例如,如果我要下去,如果我同时按右和向上,我基本上把它按在一起,蛇就会向上走到自己的身体里,杀死自己。
这是我代码中的按键部分。
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;
}
} 发布于 2014-01-09 00:20:52
这听起来像是你在改变你的蛇向“右”移动的方向,然后在蛇再次移动之前将其设置为“向上”。
在代码中的某个位置,我假设您有一个游戏循环,它每隔一次更新屏幕一次(不管时间长多少)。为了防止这种情况发生,您需要更改您的设计,以便在您的游戏接受了方向更改(key.左/右/上/下)之后,它将等到屏幕被更新一次后才接受第二个方向更改。这应该可以修复您的bug :)
正如m.t.bennett所指出的,另一个选择是检查每个按键,看看它是否是当前旅行的相反方向,如果是,则忽略它。可能会更优雅。
https://stackoverflow.com/questions/21009291
复制相似问题