我是一名学习C#的初学者,想在控制台窗口中创建一个基于文本的贪吃蛇游戏。目前,游戏运行得相当不错,但我遇到了一个问题,就是使用Thread.Sleep()方法来暂停代码执行一定毫秒数的时间时,实际暂停的时间总是比指定的时间长几毫秒。对于一个贪吃蛇游戏而言,这是一个相当大的问题。
我尝试过的解决办法:
我知道代码运行需要大约6毫秒的时间,所以我尝试测量并从每次移动之间应该等待的时间中减去它。有时候它可以正常工作,但更多的情况下控制台标题会显示花费了31毫秒...
我真的很感激任何建议,如果你知道一个更好的方法来暂停代码运行,以精确的时间为单位,我会很高兴知道 :)
解决方案:最终我使用了一个秒表,就像Tamir建议的那样,谢谢所有帮助我的人:D
我尝试过的解决办法:
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
DateTime.Now
的时间。如果你想每小时做一些事情,你需要等到每个小时相同分钟的时候开始任务。 - David Schwartz