更酷的ASCII Spinners?
在控制台应用程序中,可以使用ascii微调控制器(如GUI等待光标)来指示正在完成工作。 一个普通的微调器遍历这4个字符:'|','/',' – ','\'
什么是一些其他的循环animation序列来debugging一个控制台应用程序?
气球…
. o O @ *
Unicode有很多select,包括⌚和⌛!
-
← ↖ ↑ ↗ → ↘ ↓ ↙
-
▁ ▂ ▃ ▄ ▅ ▆ ▇ █ ▇ ▆ ▅ ▄ ▃ ▁
-
▉▊▋▌▍▎▏▎▍▌▋▊▉
-
▖ ▘ ▝ ▗
-
┤ ┘ ┴ └ ├ ┌ ┬ ┐
-
◢ ◣ ◤ ◥
-
◰ ◳ ◲ ◱
-
◴ ◷ ◶ ◵
-
◐ ◓ ◑ ◒
-
◡◡ ⊙⊙ ◠◠
-
⣾⣽⣻⢿⡿⣟⣯⣷ ⠁⠂⠄⡀⢀⠠⠐⠈
整个盲文块,即使是随机顺序http://www.fileformat.info/info/unicode/block/braille_patterns/images.htm
如果你有不止一个字符的空间,你可以使用animationASCII艺术。 例如,你可以做一个进度条,如:
[ ] [== ] [===== ] [======== ]
或“弹跳球”进度指示器(来回移动),如:
(-*--------) // moving --> (-----*----) // moving --> (---------*) // moving --> (--------*-) // moving <-- (---*------) // moving <-- (*---------) // moving <--
像这个加载animation更先进的东西也可以工作。
编辑:还有“行政桌面玩具”
╔════╤╤╤╤════╗ ╔════╤╤╤╤════╗ ╔════╤╤╤╤════╗ ╔════╤╤╤╤════╗ ║ │││ \ ║ ║ ││││ ║ ║ / │││ ║ ║ ││││ ║ ║ │││ O ║ -> ║ ││││ ║ -> ║ O │││ ║ -> ║ ││││ ║ ║ OOO ║ ║ OOOO ║ ║ OOO ║ ║ OOOO ║
当然,如果你有时间去实现类似的东西,那么animation的ASCII艺术就是最好的例子 (这将会使“控制台应用程序”变得极端)。
编辑:如果你的控制台支持颜色,你也可以在旋转时通过循环颜色来调动一个无聊的标准微调器。 用红线开始,然后慢慢地从彩虹中消失,直到紫罗兰旋转。 如果您的球在每一次传球中都将球“涂”成不同的颜色,则上面的“弹跳球”指示器可以看起来特别酷。
肯定LOLLERSKATES!
/\O | _O | O /\/ | //|_ | /_ /\ | | | |\ / \ | /| | / | LOL LOL | LLOL | LOLLOL -----------+----------+----------- Frame 0 | Frame 1 | Frame 2
在这里观察他们的行动:
var spinners = [ "←↖↑↗→↘↓↙", "▁▃▄▅▆▇█▇▆▅▄▃", "▉▊▋▌▍▎▏▎▍▌▋▊▉", "▖▘▝▗", "▌▀▐▄", "┤┘┴└├┌┬┐", "◢◣◤◥", "◰◳◲◱", "◴◷◶◵", "◐◓◑◒", "|/-\\", ".oO@*", ["◡◡", "⊙⊙", "◠◠"], ["◜ ", " ◝", " ◞", "◟ "], "◇◈◆", "⣾⣽⣻⢿⡿⣟⣯⣷", "⡀⡁⡂⡃⡄⡅⡆⡇⡈⡉⡊⡋⡌⡍⡎⡏⡐⡑⡒⡓⡔⡕⡖⡗⡘⡙⡚⡛⡜⡝⡞⡟⡠⡡⡢⡣⡤⡥⡦⡧⡨⡩⡪⡫⡬⡭⡮⡯⡰⡱⡲⡳⡴⡵⡶⡷⡸⡹⡺⡻⡼⡽⡾⡿⢀⢁⢂⢃⢄⢅⢆⢇⢈⢉⢊⢋⢌⢍⢎⢏⢐⢑⢒⢓⢔⢕⢖⢗⢘⢙⢚⢛⢜⢝⢞⢟⢠⢡⢢⢣⢤⢥⢦⢧⢨⢩⢪⢫⢬⢭⢮⢯⢰⢱⢲⢳⢴⢵⢶⢷⢸⢹⢺⢻⢼⢽⢾⢿⣀⣁⣂⣃⣄⣅⣆⣇⣈⣉⣊⣋⣌⣍⣎⣏⣐⣑⣒⣓⣔⣕⣖⣗⣘⣙⣚⣛⣜⣝⣞⣟⣠⣡⣢⣣⣤⣥⣦⣧⣨⣩⣪⣫⣬⣭⣮⣯⣰⣱⣲⣳⣴⣵⣶⣷⣸⣹⣺⣻⣼⣽⣾⣿", "⠁⠂⠄⡀⢀⠠⠐⠈", [">))'>", " >))'>", " >))'>", " >))'>", " >))'>", " <'((<", " <'((<", " <'((<"], [" /\\O\n /\\/\n /\\\n / \\\n LOL LOL", " _O\n //|_\n |\n /|\n LLOL", " O\n /_\n |\\\n / |\n LOLLOL"], [ "╔════╤╤╤╤════╗\n║ │││ \\ ║\n║ │││ O ║\n║ OOO ║", "╔════╤╤╤╤════╗\n║ ││││ ║\n║ ││││ ║\n║ OOOO ║", "╔════╤╤╤╤════╗\n║ / │││ ║\n║ O │││ ║\n║ OOO ║", "╔════╤╤╤╤════╗\n║ ││││ ║\n║ ││││ ║\n║ OOOO ║" ], ]; for (var s = 0; s < spinners.length; ++s) { var spinner = spinners[s]; var div = document.createElement('div'); var el = document.createElement('pre'); div.appendChild(el); document.body.appendChild(div); (function(spinner, el) { var i = 0; setInterval(function() { el.innerHTML = spinner[i]; i = (i + 1) % spinner.length; }, 300); })(spinner, el); }
pre { font-family: monospace; font-size: 1.5em; font-weight: bold; border: 1px solid #eee; display: inline-block; margin: .25em; }
曾经有一个叫做blinker的DOS链接器,由Blink公司生产。它在工作时会显示一个类似于这个的animation:
(o)(o) (-)(-) (_)(_)
第一帧显示约一秒钟,另外两帧短暂地animation一秒或两秒,使命令行看起来眨眼睛。 实际上效果非常好。
连接器甚至可以select眨眼一下,你可以select哪一只眼睛会眨眼。
我用了一个循环
Working. Working.. Working...
鼓舞人心的我知道
fish
是一个Python模块,可以使ASCII鱼来回移动,谁不喜欢稀有的控制台鱼?
>))'> >))'> >))'> <'((< <'((<
如果你知道整个过程有多远,我喜欢百分比栏。 它看起来不错,感觉直观,很容易实现:
| 0%
|| 5%
| 26%
| 100%
(上面的例子不是确切的)
全部取自:
http://llizard.cwahi.net/animals.html
蝙蝠飞行!
/^v^\ /^v^\ /^v^\ /^v^\ /^v^\
瓣瓣!
\^v^/ \^v^/ \^v^/ \^v^/ \^v^/
哇!弓箭手!
/\ /__\_{) |--<<)__\ \ / ( \/ ) /| \ \ ~ ~ /| \ /_|_{)/ ---<< | | ) \ | ( \| ) /| \ \ ~ ~ \ /|{)/ ---<< +-|-) \| ( ) /| \ \ ~ ~ /\ /__\_{) |--<<)__\ \ / ( \/ __) \ |__ ~ ~ /| \ /_|_{)/ ---<< | | ) \ | ( \|__) \ |__ ~ ~ \ /|{)/ ---<< +-|-) \| ( __) \ |__ ~ ~
超级骑单车
---------- __o -------- _ \<,_ ------- (*)/ (*)
Wheeeee!
放风筝
/\ '\/ ' + ' + ' + ' + ' + ' + ' ' ' ' ' ' ' ' __ ' \o . ' \\/ /\ / /
这个钓鱼也是相当可怕的
试试这些
- '+','x'
- 'v','<','^','>'
在Javascript中使用一个jQueryselect器:
var spins = [ "←↖↑↗→↘↓↙", "▁▃▄▅▆▇█▇▆▅▄▃", "▉▊▋▌▍▎▏▎▍▌▋▊▉", "▖▘▝▗", "┤┘┴└├┌┬┐", "◢◣◤◥", "◰ ◳ ◲ ◱", "◴◷◶◵", "◐◓◑◒", "|/-\\"]; var spin = spins[0], title$ = $('title'), i=0; setInterval(function() { i = i==spin.length-1 ? 0 : ++i; title$.text('('+ spin[i] +') Loading...'); },300);
我很高兴我不是唯一一个疯狂地浪费时间的人!
这里是我的最爱(一些使用dos ASCII代码):
classic: "/-\\|"; bouncing ball: ".oOo"; better bouncing ball: [46, 111, 79, 248, 79, 111]; // (.oO°Oo.) [180, 217, 193, 192, 195, 218, 194, 191]; // ┤ ┘ ┴ └ ├ ┌ ┬ ┐ [185, 188, 202, 200, 204, 201, 203, 187]; // double piped version of that [219, 220, 223]; // block colours
由我的同事礼貌,这是一个漂亮的执行在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); }
根据我的分析,它只适用于至less有32位字和ASCII字符集的小端机器。 但是这很邪恶。
使可爱的“雨”效应:
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(); } } }
在一个应用程序中,我看到了1,2,3,4,5,6,7,8,9,0。
我见过
echo -e "\033[41;1m$1 \033[0m"
在bash中不断build立一个基于块字符的进度条。
我写了一个循环的标准\ | / – 但是左边一个_移到下一个位置。 它的目的是看起来好像有一系列的纺纱厂,每一个在下一个开始之前下降到地板。 对此的需求是我的程序一再尝试,等待一定的结果。 我想表示每次尝试,也尝试了多less次,而没有占用大量的屏幕空间(或数量)。
写完之后,它看起来比我想象的要凉快得多,但是它达到了它的目的。