我是一名学习 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 建议的那样,感谢所有帮助过的人 :D
最佳答案
好吧,为了获得非常精确的计时,您应该使用 multimedia定时器。 下一个最佳选择是秒表
关于C# - 在控制台应用程序中精确使用 Thread.Sleep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46837259/