36 lines
1.2 KiB
Plaintext
36 lines
1.2 KiB
Plaintext
SeedRandom[1234];
|
|
ClearAll[ColorFunc]
|
|
chars = RandomSample[Flatten[CharacterRange @@@ Partition[Characters["\[CapitalAlpha]\[CapitalPi]ЀѵҊԯ\:03e2\:03efヲンⲀ⳩\[ForAll]∗℀℺⨀⫿"], 2]]];
|
|
charlen = Length[chars];
|
|
fadelength = 6;
|
|
ColorFunc[fade_] := ColorFunc[fade] = Blend[{Black, Green}, fade/fadelength]
|
|
rows = 30;
|
|
cols = 50;
|
|
n = 10;
|
|
trailpos = {RandomInteger[{1, cols}, n], RandomInteger[{1, rows}, n]} // Transpose;
|
|
trailchars = RandomInteger[{1, Length[chars]}, n];
|
|
charmap = ConstantArray[".", {rows, cols}];
|
|
fade = ConstantArray[5, {rows, cols}];
|
|
indices = MapIndexed[#2 &, fade, {2}];
|
|
Dynamic[Graphics[{txts}, PlotRange -> {{1, cols}, {1, rows}}, PlotRangePadding -> 1, Background -> Black]]
|
|
Do[
|
|
trailpos[[All, 2]] += 1;
|
|
fade = Ramp[fade - 1];
|
|
trailchars = Mod[trailchars + 1, charlen, 1];
|
|
Do[
|
|
If[trailpos[[i, 2]] >= rows,
|
|
trailpos[[i, 2]] = 1;
|
|
trailpos[[i, 1]] = RandomInteger[{1, cols}];
|
|
];
|
|
charmap[[trailpos[[i, 2]], trailpos[[i, 1]]]] =
|
|
chars[[trailchars[[i]]]];
|
|
fade[[trailpos[[i, 2]], trailpos[[i, 1]]]] = fadelength
|
|
,
|
|
{i, n}
|
|
];
|
|
txts = MapThread[If[#2 > 0, Text[Style[#1, ColorFunc[#2]], {#1, rows - #2 + 1} & @@ Reverse[#3]], {}] &, {charmap, fade, indices}, 2];
|
|
Pause[0.1]
|
|
,
|
|
{1000}
|
|
]
|