WriteLine на консоли, но в стиле ретро - PullRequest
2 голосов
/ 29 октября 2010

Я пытаюсь написать на консоли, скажем, "Введите ваше имя пользователя:", и я знаю, как использовать Console.WriteLine("Enter your...");

Но я хочу, чтобы это сообщение с подсказкой отображалось как «Чужие» или «Звездный путь». Ваш экспертный ответ с лучшими практиками высоко ценится. Спасибо

Ответы [ 6 ]

9 голосов
/ 29 октября 2010
    public static void WriteSlow(string txt) {
        foreach (char ch in txt) {
            Console.Write(ch);
            System.Threading.Thread.Sleep(50);
        }
    }
5 голосов
/ 29 октября 2010

Я думаю, что использование Random to sleep делает приятное прикосновение.

    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();
    }
1 голос
/ 29 октября 2010

Моим единственным дополнением будет немного случайности (начиная с ответа Ганса):

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)); 
    } 
} 
1 голос
/ 29 октября 2010

Вы можете создать цикл над вашим текстом, спящий небольшое количество времени между буквами, как:

string text = "Enter your User Name:";
for(int i = 0; i < text.Length; i++)
{
    Console.Write(text[i]);
    System.Threading.Thread.Sleep(50);
}
1 голос
/ 29 октября 2010

Просто используйте Thread.Sleep в пространстве имен System.Threading, чтобы добавить ожидание между каждым символом.

String text = "Enter your username";
foreach (char c in text)
{
    Console.Write(c);
    System.Threading.Thread.Sleep(100);
 }
1 голос
/ 29 октября 2010
 foreach (var character in "Enter your...")
        {
            Console.Write(item);
            System.Threading.Thread.Sleep(300);

        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...