【问题标题】:How to make text be "typed out" in console application?如何在控制台应用程序中“输入”文本?
【发布时间】:2014-10-09 20:00:21
【问题描述】:

就像computer does it in War Games 的方式一样。我已经开始了,但我不知道从哪里开始。

static void TypeLine(string line)
{
    string output = null;
    char[] characters = line.ToCharArray();
    for (int i = 0; i < characters.Length; i++)
    {
        output += characters[i];
        Console.Clear();
    }
    Console.WriteLine(output);
}

我的想法是拆分你想要输出的字符串,添加一个字符,清除控制台,添加另一个,等等。我已经做到了,但我真的不知道如何让它添加,然后清除,然后再次添加。如果您愿意,一些提示会很好,甚至可以完成代码。

【问题讨论】:

    标签: c# string console-application


    【解决方案1】:

    最简单的方法可能是在字符之间使用 Sleep()。像这样的:

    static void TypeLine(string line) {
        for (int i = 0; i < line.Length; i++) {
            Console.Write(line[i]);
            System.Threading.Thread.Sleep(150); // Sleep for 150 milliseconds
        }
    }
    

    【讨论】:

      【解决方案2】:

      您正在寻找的效果是,在将字符串的每个字符写入控制台后,会产生大约 10 到 50 毫秒的短暂延迟,就像在这段代码中一样:

      static void Main()
      {
          var myString = "Hey there" + Environment.NewLine + "How are you doing?";
      
          foreach (var character in myString)
          {
              Console.Write(character);
              Thread.Sleep(30);
          }
          Console.WriteLine();
          Console.ReadLine();
      }
      

      在上面的代码中,我创建了一个包含换行符的字符串 (Environment.NewLine)。之后,我使用foreach 循环遍历该字符串的每个字符并将其一一写入控制台。在每个字符之后,线程会休眠 30 毫秒 (Thread.Sleep),以便在该时间跨度之后再次运行。

      如果您还有其他问题,请随时提出。

      【讨论】:

        【解决方案3】:

        如其他人所说,要延迟输入字符,最好的方法是使用Thread.Sleep(time)

        但实际上您可能想添加更多细节。例如,您可能想自定义显示的角色(正如您在给我们的视频中看到的那样),但在控制台窗口中没有效果。

        添加这些效果完全是另一回事,而且有点复杂。

        How should I create a custom graphical console/terminal on Windows? 为您提供理想的愿景;)

        【讨论】:

        • 谢谢!当我了解我正在尝试做的事情的基础知识时,我会研究它。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-21
        • 2019-01-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多