首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在玩蛇游戏

我在玩蛇游戏
EN

Stack Overflow用户
提问于 2014-01-09 00:12:47
回答 1查看 172关注 0票数 1

我正在C#上做一个蛇游戏,但我的钥匙出了问题。

我在遵循这里找到的确切密码。http://codesmesh.com/snake-game-in-c/我得到的错误是.例如,如果我要下去,如果我同时按右和向上,我基本上把它按在一起,蛇就会向上走到自己的身体里,杀死自己。

这是我代码中的按键部分。

代码语言:javascript
复制
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;
   }
}    
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-09 00:20:52

这听起来像是你在改变你的蛇向“右”移动的方向,然后在蛇再次移动之前将其设置为“向上”。

在代码中的某个位置,我假设您有一个游戏循环,它每隔一次更新屏幕一次(不管时间长多少)。为了防止这种情况发生,您需要更改您的设计,以便在您的游戏接受了方向更改(key.左/右/上/下)之后,它将等到屏幕被更新一次后才接受第二个方向更改。这应该可以修复您的bug :)

正如m.t.bennett所指出的,另一个选择是检查每个按键,看看它是否是当前旅行的相反方向,如果是,则忽略它。可能会更优雅。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21009291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档