我想在C#控制台中制作一个贪吃蛇游戏,移动问题



要改变蛇的方向,我首先必须按向上箭头,然后按蛇的新方向,蛇会朝那个方向前进,直到我再次点击向上箭头。因此,要向左更改方向,您需要按向上箭头,然后按左箭头。我希望它消失,当我按左键让蛇向左走时。基本上向上箭头正在暂停游戏,我不知道为什么。

if (Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.UpArrow)
{
keyinfo = Console.ReadKey();
Console.WriteLine(ConsoleKey.UpArrow);
}
if (Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.DownArrow)
{
keyinfo = Console.ReadKey();
Console.WriteLine(ConsoleKey.DownArrow);
}
if (Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.LeftArrow)
{
keyinfo = Console.ReadKey();
Console.WriteLine(ConsoleKey.LeftArrow);
}
if (Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.RightArrow)
{
keyinfo = Console.ReadKey();
Console.WriteLine(ConsoleKey.RightArrow);
}
if (keyinfo.Key == ConsoleKey.UpArrow)
{
j--;
}
if (keyinfo.Key == ConsoleKey.DownArrow)
{
j++;
}
if (keyinfo.Key == ConsoleKey.LeftArrow)
{
k--;
}
if (keyinfo.Key == ConsoleKey.RightArrow)
{
k++;
}

你给ReadKey打电话的次数太多了。 您应该调用它一次,然后将结果存储在变量中:

if (Console.KeyAvailable)
{
keyinfo = Console.ReadKey(true);
Console.WriteLine(keyinfo);
if (keyinfo.Key == ConsoleKey.UpArrow)
{
j--;
}
if (keyinfo.Key == ConsoleKey.DownArrow)
{
j++;
}
if (keyinfo.Key == ConsoleKey.LeftArrow)
{
k--;
}
if (keyinfo.Key == ConsoleKey.RightArrow)
{
k++;
}
}
if (Console.KeyAvailable)
{
keyinfo = Console.ReadKey(true);
Console.WriteLine(keyinfo);
}
if (keyinfo.Key == ConsoleKey.UpArrow)
{
j--;
}
if (keyinfo.Key == ConsoleKey.DownArrow)
{
j++;
}
if (keyinfo.Key == ConsoleKey.LeftArrow)
{
k--;
}
if (keyinfo.Key == ConsoleKey.RightArrow)
{
k++;
}

相关内容

最新更新