在控制台应用程序中,可以使用ascii转轮,如GUI等待游标,以指示工作正在完成。一个普通的旋转器循环使用以下4个字符:'|','/','-','\'

还有哪些循环动画序列可以为控制台应用程序增添趣味?


当前回答

我用了一个循环

Working. 
Working..
Working...

我知道这很鼓舞人心

其他回答

试试这些

“+”,“x” 'v', '<', '^', '>'

气球……

. o O @ *

Unicode有很多选择,包括⌚和⌛!

←↖↑↗→↘↓↙ ▁▂▃▄▅▆▇█▇▆▅▄▃▁ ▉▊▋▌▍▎▏▎▍▌▋▊▉ ▖▘▝▗ ┤┘┴└├┌┬┐ ◢◣◤◥ ◰◳◲◱ ◴◷◶◵ ◐◓◑◒ ◡◡⊙⊙◠◠ ⣾⣽⣻⢿⡿⣟⣯⣷⠁⠂⠄⡀⢀⠠⠐盲文⠈整个街区,甚至在随机订单http://www.fileformat.info/info/unicode/block/braille_patterns/images.htm

如果你知道你在这个过程中走了多远,我喜欢百分比条。它看起来很漂亮,感觉很直观,很容易实现:

| 0%

|| 5%

|||||| 25%

||||||||||||||||||||| 100%

制作一个可爱的“雨”效果:

using System;
using System.Text;
using System.Threading;

namespace CSharpSandbox
{
    class Program
    {
        static Random rnd = new Random();
        static char[,] Step(char[,] matrix)
        {
            int width = matrix.GetUpperBound(0) + 1;
            int height = matrix.GetUpperBound(1) + 1;

            char[,] res = new char[width, height];
            for (int h = 0; h < height; h++)
            {
                for (int w = 0; w < width; w++)
                {
                    char c;
                    if (h == 0)
                        c = rnd.Next(2) == 0 ? ' ' : '*';
                    else
                        c = matrix[w, h - 1];

                    res[w, h] = c;
                }
            }

            return res;
        }

        static string ToString(char[,] matrix)
        {
            int width = matrix.GetUpperBound(0) + 1;
            int height = matrix.GetUpperBound(1) + 1;
            StringBuilder sb = new StringBuilder();

            for (int h = 0; h < height; h++)
            {
                for (int w = 0; w < width; w++)
                {
                    sb.Append(matrix[w, h]);
                }
                sb.AppendLine();
            }
            return sb.ToString();
        }

        static Timer timer;
        static void Spinner()
        {
            char[,] matrix = new char[10, 5];
            timer = new Timer(_ =>
                {
                    string s = ToString(matrix);

                    Console.SetCursorPosition(0, 0);
                    Console.Write(s);

                    matrix = Step(matrix);
                },
                null,
                0,
                200);
        }

        static void Main(string[] args)
        {
            Spinner();
            Console.ReadLine();
        }
    }
}