2014-11-22 166 views
-1

我想制作一个游戏,我想在它运行时放置一个计时器,一种玩家可以输入所需持续时间的方式,它会在结束时结束程序那时。如何填写以下代码中的while条件以实现此目的?倒计时在C而做#

ConsoleKeyInfo info; 
jatek j = new jatek(); 
do 
{ 
    Console.Clear(); 
    Console.WriteLine(j.Jatekter()); 
    info = Console.ReadKey(true); 
    switch (info.Key) 
    { 
     case ConsoleKey.UpArrow: j.Mozgas(-1, 0); break; 
     case ConsoleKey.DownArrow: j.Mozgas(1, 0); break; 
     case ConsoleKey.LeftArrow: j.Mozgas(0, -1); break; 
     case ConsoleKey.RightArrow: j.Mozgas(0, 1); break; 
     case ConsoleKey.Escape: j.Vege = true; break; 
    } 
} while(); 
+0

为什么我的问题编辑和-1'd?当我需要考虑更多的问题时,我必须等待4(!)天才能提出另一个问题,考虑到我的项目将于下个星期五到期......我一直只是礼貌地回答我的答案,而你只是-1我。如果你问我,会觉得很讨厌和不受欢迎。 – Cilinder 2014-11-22 23:29:20

+0

你的问题被编辑,因为它使用了不正确的格式。有关降低投票的潜在原因,请查看downvote按钮的工具提示。 – 2014-11-23 12:02:13

回答

0

我建议在开始投入开始时间,你可以在while循环中这样引用它:

DateTime startTime = DateTime.Now; 
do 
{ 
    // Game play 
} while(((TimeSpan) (DateTime.Now - startTime)).TotalMinutes < gameInterval); 

你可以给gameInterval的游戏要多长时间必要的值竞选。如果你到达while循环,从现在开始到你开始的时间间隔超过了这个时间间隔,你将不会再次循环。

编辑

我没有我的IDE中打开,但我不相信上面是正确的语法,但它仍然应该把你在正确的方向。这个question有一个很好的答案来获得持续时间,这应该对你有所帮助。

编辑2我已经改变了上面的代码来使用TimeSpan,它使得假设gameInterval在几分钟内,但是你可以改变它。

+0

DateTime.Now()似乎不起作用。我可能很愚蠢,但我无法从你分享的其他问题中获得我正在寻找的解决方案。我了解了TimeSpan现在的工作方式,但我仍然不知道如何在这种特殊情况下使用它。我如何获得开始时间? – Cilinder 2014-11-22 19:58:23

+0

@Cilinder请参阅编辑。我很抱歉,我的所有C#代码都在工作,而且我有种记忆力。 – AdamMc331 2014-11-22 20:02:20

+0

它说:'不能将类型'System.DateTime'转换为'System.TimeSpan''。有什么建议? – Cilinder 2014-11-22 20:08:47