В консольном приложении может использоваться счетчик ASCII, как GUI ожидают курсор, чтобы указать, что работа делается. Общий счетчик циклы через эти 4 символа: '|', '/', '-'', \'
Что некоторые другие циклические последовательности анимации должны приправить консольное приложение?
Создает симпатичный эффект "дождя":
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();
}
}
}
Предоставлено моим коллегой, вот отличная реализация на C:
#define COW 2172
char* moo = "MO ";
void wrap() {
int i,j;
for(i=0;doSomething(i);i++)
j=COW-moo[i&3],fputs(&j,stderr);
}
По моему анализу, она работает только на машине с прямым порядком байтов с как минимум 32-битными словами и Набор символов ASCII. Но это довольно дьявольски умен.
Раньше был компоновщик DOS с именем blinker от Blink Inc. Он отображал анимацию, подобную этой, пока работал:
(o)(o)
(-)(-)
(_)(_)
первый кадр отображается примерно секунду, а два других кратко анимируются раз в секунду или две, заставляя командную строку моргать глазами. На самом деле, эффект был довольно крутым.
У компоновщика даже была возможность моргнуть одним глазом, и вы могли выбрать, какой глаз будет моргать.
Если у вас есть пространство для нескольких символов, вы можете использовать анимированное изображение ASCII. Например, вы можете сделать индикатор выполнения, например:
[ ]
[== ]
[===== ]
[======== ]
, или индикатор прогресса «прыгающий мяч» (который движется вперед и назад), например:
(-*--------) // moving -->
(-----*----) // moving -->
(---------*) // moving -->
(--------*-) // moving <--
(---*------) // moving <--
(*---------) // moving <--
Что-то более продвинутое, например , эта анимация загрузки также может работать .
Редактировать: Есть еще "настольная игрушка для руководителей"
╔════╤╤╤╤════╗ ╔════╤╤╤╤════╗ ╔════╤╤╤╤════╗ ╔════╤╤╤╤════╗
║ │││ \ ║ ║ ││││ ║ ║ / │││ ║ ║ ││││ ║
║ │││ O ║ -> ║ ││││ ║ -> ║ O │││ ║ -> ║ ││││ ║
║ OOO ║ ║ OOOO ║ ║ OOO ║ ║ OOOO ║
И, конечно, есть лучший пример анимированного ASCII-арта , если у вас было время что-то реализовать аналогично (это потребовало бы "пикантности консольного приложения" до крайности).
Изменить: Если ваша консоль поддерживает цвет, вы также можете оживить скучный стандартный счетчик, циклически меняя цвета во время вращения. Начните с красной линии, а затем медленно переходите от радуги к фиолетовой по мере вращения. Это может выглядеть особенно круто с индикатором «прыгающий мяч» выше, если у вас есть мяч, «раскрашивающий» полоску в другой цвет при каждом проходе.
Я написал тот, который циклически прошел через стандарт \ | / - но оставил _ и перешел на следующую позицию. Он должен был выглядеть так, как если бы была серия прядильщиков, каждая из которых упала на пол перед запуском следующей. Необходимость в этом заключалась в том, что моя программа неоднократно что-то пробовала и ждала определенного результата. Я хотел представить каждый раз, когда он пытался, а также сколько раз он пытался, не занимая много места на экране (или подсчитывая).
После того, как я написал его, он выглядел намного менее круто, чем я думал, но он выполнил свою задачу.
Я видел
echo -e "\033[41;1m$1 \033[0m"
В bash постоянно строить индикатор выполнения на основе символа блока.
Множество вариантов Unicode, включая ⌚ и ⌛!
← ↖ ↑ ↗ → ↘ ↓ ↙
▃ ▄ ▅ ▆ ▇ █ ▇ ▆ ▅ ▃
▉▊▋▌▍▎▏▎▍▌▋▊▉
▖ ▘ ▝ ▗
┤ ┘ ┴ └ ├ ┌ ┬ ┐
◢ ◣ ◤ ◥
◰ ◳ ◲ ◱
◴ ◷ ◶ ◵
◐ ◓ ◑ ◒
◡◡ ⊙⊙ ◠◠
⣾⣽⣻⢿⡿⣟⣯⣷ ⠁⠂⠄⡀⢀⠠⠐⠈
Весь блок Брайля, даже в случайном порядке http://www.fileformat.info/info/unicode/block/braille_patterns /images.htm
Я использовал цикл
Working.
Working..
Working...
Inspirational I know
Определенно LOLLERSKATES!
/\O | _O | O
/\/ | //|_ | /_
/\ | | | |\
/ \ | /| | / |
LOL LOL | LLOL | LOLLOL
-----------+----------+-----------
Frame 0 | Frame 1 | Frame 2
fish
- это модуль Python, который оживляет ASCII-рыбу, бегающую вперед и назад, и кому не нравится редкая консольная рыба?
>))'>
>))'>
>))'>
<'((<
<'((<