Nasal-Interpreter/test/ascii-art.nas

232 lines
9.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

use std.padding;
use std.process_bar;
use std.unix;
use std.runtime;
var table_character_set = [
"─", "━", "│", "┃", "╌", "╍", "╎", "╏", "┄", "┅",
"┆", "┇", "┈", "┉", "┊", "┋", "┌", "┍", "┎", "┏",
"┐", "┑", "┒", "┓", "└", "┕", "┖", "┗", "┘", "┙",
"┚", "┛", "├", "┝", "┞", "┟", "┠", "┡", "┢", "┣",
"┤", "┥", "┦", "┧", "┨", "┩", "┪", "┫", "┬", "┭",
"┮", "┯", "┰", "┱", "┲", "┳", "┴", "┵", "┶", "┷",
"┸", "┹", "┺", "┻", "┼", "┽", "┾", "┿", "╀", "╁",
"╂", "╃", "╄", "╅", "╆", "╇", "╈", "╉", "╊", "╋",
"╪", "╫", "╬", "═", "║", "╒", "╓", "╔", "╕", "╖",
"╗", "╘", "╙", "╚", "╛", "╜", "╝", "╞", "╟", "╠",
"╡", "╢", "╣", "╤", "╥", "╦", "╧", "╨", "╬", "╩",
"┷", "┳", "⊥", "﹃", "﹄", "╮", "╭", "╯", "╰", ""
];
var selection_box = ["○", "◉", "☐", "▣", "☑", "☒"];
var char_ttf=[
[" "," "," "," "," "," "],
[" █████╗ ","██╔══██╗","███████║","██╔══██║","██║ ██║","╚═╝ ╚═╝"],
["██████╗ ","██╔══██╗","██████╔╝","██╔══██╗","██████╔╝","╚═════╝ "],
[" ██████╗","██╔════╝","██║ ","██║ ","╚██████╗"," ╚═════╝"],
["██████╗ ","██╔══██╗","██║ ██║","██║ ██║","██████╔╝","╚═════╝ "],
["███████╗","██╔════╝","█████╗ ","██╔══╝ ","███████╗","╚══════╝"],
["███████╗","██╔════╝","█████╗ ","██╔══╝ ","██║ ","╚═╝ "],
[" ██████╗ ","██╔════╝ ","██║ ███╗","██║ ██║","╚██████╔╝"," ╚═════╝ "],
["██╗ ██╗","██║ ██║","███████║","██╔══██║","██║ ██║","╚═╝ ╚═╝"],
["██╗","██║","██║","██║","██║","╚═╝"],
[" ██╗"," ██║"," ██║","██ ██║","╚█████╔╝"," ╚════╝ "],
["██╗ ██╗","██║ ██╔╝","█████╔╝ ","██╔═██╗ ","██║ ██╗","╚═╝ ╚═╝"],
["██╗ ","██║ ","██║ ","██║ ","███████╗","╚══════╝"],
["███╗ ███╗","████╗ ████║","██╔████╔██║","██║╚██╔╝██║","██║ ╚═╝ ██║","╚═╝ ╚═╝"],
["███╗ ██╗","████╗ ██║","██╔██╗ ██║","██║╚██╗██║","██║ ╚████║","╚═╝ ╚═══╝"],
[" ██████╗ ","██╔═══██╗","██║ ██║","██║ ██║","╚██████╔╝"," ╚═════╝ "],
["██████╗ ","██╔══██╗","██████╔╝","██╔═══╝ ","██║ ","╚═╝ "],
[" ██████╗ ","██╔═══██╗","██║ ██║","██║▄▄ ██║","╚██████╔╝"," ╚══▀▀═╝ "],
["██████╗ ","██╔══██╗","██████╔╝","██╔══██╗","██║ ██║","╚═╝ ╚═╝"],
["███████╗","██╔════╝","███████╗","╚════██║","███████║","╚══════╝"],
["████████╗","╚══██╔══╝"," ██║ "," ██║ "," ██║ "," ╚═╝ "],
["██╗ ██╗","██║ ██║","██║ ██║","██║ ██║","╚██████╔╝"," ╚═════╝ "],
["██╗ ██╗","██║ ██║","██║ ██║","╚██╗ ██╔╝"," ╚████╔╝ "," ╚═══╝ "],
["██╗ ██╗","██║ ██║","██║ █╗ ██║","██║███╗██║","╚███╔███╔╝"," ╚══╝╚══╝ "],
["██╗ ██╗","╚██╗██╔╝"," ╚███╔╝ "," ██╔██╗ ","██╔╝╚██╗","╚═╝ ╚═╝"],
["██╗ ██╗","╚██╗ ██╔╝"," ╚████╔╝ "," ╚██╔╝ "," ██║ "," ╚═╝ "],
["███████╗","╚══███╔╝"," ███╔╝ "," ███╔╝ ","███████╗","╚══════╝"],
];
var trans_ttf = func(string) {
var str=["","","","","",""];
for(var i=0;i<size(string);i+=1) {
var number=string[i];
if (97<=number and number<=122)
for(var j=0;j<6;j+=1)
str[j]~=char_ttf[number-96][j];
elsif (65<=number and number<=90)
for(var j=0;j<6;j+=1)
str[j]~=char_ttf[number-64][j];
else
for(var j=0;j<6;j+=1)
str[j]~=char_ttf[0][j];
}
foreach(var i;str)
println(i);
return;
}
var curve1 = func(line=4) {
var table=["╚","═","╝","╔","║","╗"];
rand(100);
var s="";
for(var i=0;i<line;i+=1) {
for(var j=0;j<90;j+=1)
s~=table[int(6*rand())];
s~='\n';
}
print(s);
}
var curve2 = func(line=2) {
var shadow=["░","▒","▓","█","▀","▄","▐","▌"];
rand(100);
var s="";
for(var i=0;i<line;i+=1) {
for(var j=0;j<90;j+=1)
s~=shadow[int(8*rand())];
s~='\n';
}
print(s);
}
var curve3 = func(line=2) {
var arr=[
0,1,2,3,4,5,6,7,8,
0,1,2,3,4,5,6,7,8,
0,1,2,3,4,5,6,7,8,
0,1,2,3,4,5,6,7,8,
0,1,2,3,4,5,6,7,8,
0,1,2,3,4,5,6,7,8,
0,1,2,3,4,5,6,7,8,
0,1,2,3,4,5,6,7,8,
0,1,2,3,4,5,6,7,8,
0,1,2,3,4,5,6,7,8
];
for(var loop=0;loop<line;loop+=1) {
for(var i=size(arr)-1;i>=0;i-=1) {
var rand_index=int(i*rand());
(arr[i],arr[rand_index])=(arr[rand_index],arr[i]);
}
# 0 1 2 3 4 5 6 7 8
var shadow=[" ","░","▒","▓","█","▀","▄","▐","▌"];
var s="";
for(var i=0;i<size(arr);i+=1)
s~=shadow[arr[i]];
println(s);
}
return;
}
var curve4 = func(line=4) {
var shadow=["m░\e[0m","m▒\e[0m","m▓\e[0m","m█\e[0m","m▀\e[0m","m▄\e[0m","m▐\e[0m","m▌\e[0m"];
var front=[
"30","31","32","33","34","35","36","37",
"90","91","92","93","94","95","96","97",
];
var back=[
"40","41","42","43","44","45","46","47",
"100","101","102","103","104","105","106","107"
];
rand(time(0));
for(var i=0;i<line;i+=1) {
for(var j=0;j<90;j+=1)
print("\e["~front[16*rand()]~";"~back[16*rand()]~shadow[8*rand()]);
print('\n');
}
}
var curve5 = func(line=4) {
var vec=["▀▄─","▄▀─","▀─▄","▄─▀"];
for(var (y,p)=(0,0);y!=line;y+=1) {
for(var x=0;x!=30;x+=1)
print(vec[p]);
print("\n");
p+=1;
p=p>=4?0:p;
}
}
var ansi_escape_sequence = func() {
# decoration
for(var i=0;i<10;i+=1)
print("\e["~i~"m",padding.rightpad(i,4),"\e[0m");
print("\n");
# 8/16 color
for(var i=30;i<38;i+=1)
print("\e["~i~"m ",padding.rightpad(i,4),"\e[0m");
for(var i=30;i<38;i+=1)
print("\e["~i~";1m ",padding.rightpad(i,4),"\e[0m");
print("\n");
for(var i=40;i<48;i+=1)
print("\e["~i~"m ",padding.rightpad(i,4),"\e[0m");
for(var i=40;i<48;i+=1)
print("\e["~i~";1m ",padding.rightpad(i,4),"\e[0m");
print("\n");
for(var i=90;i<98;i+=1)
print("\e["~i~"m ",padding.rightpad(i,4),"\e[0m");
for(var i=90;i<98;i+=1)
print("\e["~i~";1m ",padding.rightpad(i,4),"\e[0m");
print("\n");
for(var i=100;i<108;i+=1)
print("\e["~i~"m ",padding.rightpad(i,4),"\e[0m");
for(var i=100;i<108;i+=1)
print("\e["~i~";1m ",padding.rightpad(i,4),"\e[0m");
print("\n");
# 256 color
for(var i=0;i<16;i+=1) {
for(var j=0;j<16;j+=1) {
var code=str(i*16+j);
print("\e[38;5;"~code~"m ",padding.rightpad(code,4),"\e[0m");
}
print("\n");
}
for(var i=0;i<16;i+=1) {
for(var j=0;j<16;j+=1) {
var code=str(i*16+j);
print("\e[48;5;"~code~"m ",padding.rightpad(code,4),"\e[0m");
}
print("\n");
}
# move curser left and up
var bar=process_bar.default_bar("classic3",30);
var progress=[0,0,0,0,0,0,0,0];
var increase=[0.03,0.06,0.04,0.094,0.08,0.09,0.05,0.032];
foreach(var i;progress) {
print("\e[1000D",bar.bar(i)," ",padding.rightpad(str(int(i*100)),3)," % \n");
}
for(var i=0;i<1/0.03;i+=1) {
print("\e[1000D","\e["~str(size(progress))~"A");
forindex(var j;progress) {
progress[j]+=increase[j];
progress[j]=progress[j]>1?1:progress[j];
print("\e[1000D",bar.bar(progress[j])," ",padding.rightpad(str(int(progress[j]*100)),3)," % \n")
}
unix.sleep(0.01);
}
}
# enable unicode
runtime.windows.set_utf8_output();
trans_ttf("just for test");
trans_ttf(" ValKmjolnir ");
print("curve 1\n");
curve1();
print("curve 2\n");
curve2();
print("curve 3\n");
curve3();
print("curve 4\n");
curve4();
print("curve 5\n");
curve5();
print("ANSI escape sequence\n");
ansi_escape_sequence();