我是一名学习c#的初学程序员,我想在控制台窗口中制作基于文本的蛇游戏。现在,游戏工作得相当好,但我遇到一个问题,使用Thread.Sleep()方法暂停代码一段特定的毫秒。
问题在于,每当我尝试暂停游戏特定时间时,它似乎会暂停几毫秒。而且由于这是一场蛇游戏,这是一个非常大的问题。
我试图做的事情:
while (true)
{
double startingTime = DateTime.Now.TimeOfDay.Milliseconds;
//code
double lag = DateTime.Now.TimeOfDay.Milliseconds - startingTime;
Thread.Sleep((int)Math.Round(25 - lag));
double finalTime = DateTime.Now.TimeOfDay.Milliseconds - startingTime;
Console.Title = string.Format("Time: {0}", finalTime);
}
我知道这个代码需要大约6毫秒才能运行,所以我试着测量它并从它应该在每次移动之间等待的时间中减去它。有时候它可以正常工作,但通常情况下,控制台标题说需要31毫秒......
我真的很感激任何建议,如果你知道一个更好的方法来暂停代码运行一段时间,我会很高兴知道:)
解决:我最终使用秒表,如Tamir Suggested,感谢所有帮助过的人:D