【问题标题】:WriteLine on Console but in Retro Style控制台上的 WriteLine,但采用复古风格
【发布时间】:2010-10-29 18:37:36
【问题描述】:

我正在尝试在控制台上写,让我们说“输入您的用户名:”,我知道使用 Console.WriteLine("Enter your...");

但我希望这条提示消息显示为它的输入类似于外星人或星际迷航计算机。 非常感谢您对最佳实践的专家回答。谢谢

【问题讨论】:

  • 我看过很多星际迷航,但我不确定你想要完成什么。
  • Alien Startrek Computers 究竟是如何键入提示的?投票结束。
  • 无需关闭...我理解他所说的外星人计算机如何输入内容...很多其他人也是如此。
  • Henk Holterman 如果您不了解 C# 或上述问题,请让其他高级开发人员给出答案。

标签: c# .net console


【解决方案1】:
    public static void WriteSlow(string txt) {
        foreach (char ch in txt) {
            Console.Write(ch);
            System.Threading.Thread.Sleep(50);
        }
    }

【讨论】:

  • @Steve Guidi:还有......既然 Console 是一个静态类,那它会如何工作?
  • 应该是TextWriter的扩展方法。
  • 嗯,这是否意味着未来的计算机运行在 1 kHz 时钟上?
  • 你应该为每个角色添加一个点击声音来增强效果。
  • @Chris 是的,这就是我现在想要做的:)。我认为 Beep 类会起作用吗?
【解决方案2】:

我认为使用 Random 来休眠线程会带来不错的效果。

    private static void RetroConsoleWriteLine()
    {
        const string message = "Enter your user name...";
        var r = new Random();
        foreach (var c in message)
        {
            Console.Write(c);
            System.Threading.Thread.Sleep(r.Next(50,300));
        }
        Console.ReadLine();
    }

或者,如果只是为了它并从其他人中脱颖而出

    private static void RetroConsoleWriteLine()
    {
        const string message = "Enter your user name...";
        var r = new Random();
        Action<char> action = c =>
        {
            Console.Write(c);
            System.Threading.Thread.Sleep(r.Next(50, 300));
        };
        message.ToList().ForEach(action);
        Console.ReadLine();
    }

【讨论】:

    【解决方案3】:

    只需在 System.Threading 命名空间中使用 Thread.Sleep 即可在每个字符之间添加等待。

    String text = "Enter your username";
    foreach (char c in text)
    {
        Console.Write(c);
        System.Threading.Thread.Sleep(100);
     }
    

    【讨论】:

      【解决方案4】:

      您可以在文本上创建一个循环,在字母之间休眠一小段时间,例如:

      string text = "Enter your User Name:";
      for(int i = 0; i < text.Length; i++)
      {
          Console.Write(text[i]);
          System.Threading.Thread.Sleep(50);
      }
      

      【讨论】:

        【解决方案5】:
         foreach (var character in "Enter your...")
                {
                    Console.Write(item);
                    System.Threading.Thread.Sleep(300);
        
                }
        

        【讨论】:

          【解决方案6】:

          我唯一的补充是一点点随机性(从 Hans 的回答开始):

          public static void WriteSlow(string txt) 
          { 
              Random r = new Random();
              foreach (char ch in txt) 
              { 
                  Console.Write(ch); 
                  System.Threading.Thread.Sleep(r.Next(10,100)); 
              } 
          } 
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-04-06
            • 2011-10-04
            • 2012-10-14
            • 1970-01-01
            相关资源
            最近更新 更多