【问题标题】:Countdown in do while C# [closed]C#中的倒计时[关闭]
【发布时间】:2015-01-20 19:08:09
【问题描述】:

我想制作一个游戏,我想在它运行时在其中放置一个计时器,玩家可以通过这种方式输入所需的持续时间并在该时间结束时结束程序。如何在以下代码中填充 while 条件以实现此目的?

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 ();

【问题讨论】:

  • 为什么我的问题被编辑和 -1'd?而且我必须等待 4(!)天才能提出另一个问题,因为我可能需要问更多,因为我的项目将于下周五到期……我对我的回答很有礼貌,而你只是 -1 我。如果你问我,感觉很烦人和不受欢迎。
  • 您的问题已被编辑,因为它使用了不正确的格式。对于不赞成投票的潜在原因,请查看不赞成投票按钮的工具提示。

标签: c# timer while-loop


【解决方案1】:

我建议在开头添加一个 starttime,您可以像这样在 while 循环中引用它:

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

您可以为 gameInterval 指定游戏应该运行多长时间的必要值。如果您到达 while 循环并且从现在到开始时的总持续时间超过了该时间间隔,您将不会再次循环。

编辑

我没有打开我的 IDE,但我不认为上面的语法是正确的,但它仍应将您推向正确的方向。这个question 有一个很好的答案来获取持续时间,这应该会对你有所帮助。

编辑 2 我已将上面的代码更改为使用 TimeSpan,它假设 gameInterval 以分钟为单位,但是您可以更改它。

【讨论】:

  • DateTime.Now() 似乎确实不起作用。我可能很愚蠢,但我无法从你分享的另一个问题中得到我正在寻找的解决方案。我知道 TimeSpan 现在是如何工作的,而且确实如此,但我仍然不知道如何在这种特殊情况下使用它。如何获取开始时间?
  • @Cilinder 请参阅编辑。抱歉,我所有的 C# 代码都在工作,我有点失忆了。
  • 它说:'无法将类型'System.DateTime'转换为'System.TimeSpan''。有什么建议吗?
  • 是否也要在日期周围加上括号? `((TimeSpan) (DateTime.now - startTime))?
  • 没问题!如果这确实解决了您的问题,请随时接受此答案(单击旁边的复选标记)。
猜你喜欢
  • 1970-01-01
  • 2013-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多