Acme-Matrix
view release on metacpan or search on metacpan
lib/Acme/Matrix.pm view on Meta::CPAN
package Acme::Matrix;
our $VERSION = '0.11';
use 5.006; use strict; use warnings;
use Term::ReadKey;
our (@WORDS, @CHARS, @COLOURS);
BEGIN {
$SIG{INT} = \&shutdown;
@WORDS = (
[qw/ã ã
ã ã ã/],
[qw/ä¸ æ£ ç´/],
[qw/ã ã 㣠㽠ã/],
[qw/æ ã ã¿ ã æ± ã/],
[qw/ã ã ã 㵠㯠ã/],
[qw/㵠㨠㩠ã/],
[qw/㯠㡠ã ã ã¡ ã/],
[qw/ã ã ã ã ã ã² ã© ã/],
[qw/ã© ã ã ã¼/],
[qw/ã ã ã ã ã ã/],
[qw/㪠㹠ã 㯠ã/],
[qw/ã ã¼ ã³/],
[qw/㫠㣠㦠ã/],
[qw/ã ã¿ ã® ã¿ ã ã¨/],
[qw/㨠ã ã ã ã/],
[qw/ã¹ ã 㣠㳠ã ã© ã¹/],
[qw/ã ã« ã ã/],
[qw/㨠㯠㹠ã ã 㤠ã ã¼ ã· ã§ ã³/],
[qw/ã ã ã ã/],
[qw/ã 㤠㳠ã/],
[qw/å³ ã å ã ã/],
[qw/ã« ã ã ã ã ã/],
[qw/æ ã ã¦/],
[qw/㪠ã ã¹ ã³/],
[qw/風 ã« ã 㪠㳠ã/],
[qw/㷠㼠㯠㬠ã ã/],
[qw/ã ã ã ã ã ã/],
[qw/ã 㤠ã ã¨/],
[qw/ã· ã¼ ã« ã¼/],
[qw/㤠ã 㸠ã ã¼ ã· ã§ ã³/]
);
@CHARS = qw/
ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã 㡠㤠㦠ã¨
㪠㫠㬠ã 㮠㯠㲠㵠㸠㻠㾠㿠ã ã ã ã ã ã ã ã
㢠㤠㦠㨠㪠㫠ã 㯠㱠㳠㬠㮠㰠㲠㴠㵠㷠㹠㻠ã½
㶠㸠㺠㼠㾠㿠ã ã ã ã ã ã ã
ã ã ã ã ã ã ã
ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã ã¡ ã¢
/;
@COLOURS = ( 28, 34, 35, 40, 41, 46, 47, 48, 48, 82, 83, 0 );
}
sub start {
my ($pkg, %args) = @_;
@WORDS = @{$args{words}} if ($args{words});
@CHARS = @{$args{chars}} if ($args{chars});
my $delay = $args{delay} ? $args{delay} / 1000 : 0.01;
my $space = " " x ($args{spacing} || 2);
my ($wchar, $hchar) = GetTerminalSize();
$wchar = $wchar * (0.99 / ($args{spacing} || 2));
my %word_lines = (
map { $_ => [] } 0 .. $wchar
);
print "\033[1J";
print "\033[48;5;232m";
while (1) {
for (0..$wchar) {
if (int(rand(5) + 0.5) > 4) {
my $i = 0;
push @{$word_lines{$_}}, (int(rand(1) + 0.5))
? sprintf("\033[38;5;%sm%s", $COLOURS[int(rand(scalar @COLOURS))], $CHARS[int(rand(scalar @CHARS))])
: map { sprintf("\033[38;5;%sm%s", $COLOURS[$i++], $_) } @{ $WORDS[int(rand(scalar @WORDS))] }, $space;
}
print shift(@{$word_lines{$_}}) || $space;
}
print "\n";
select(undef, undef, undef, $delay);
}
}
sub shutdown {
print "\033[0m";
print "\033c";
exit;
}
__END__
1;
=head1 NAME
Acme::Matrix - Heavenly digital rain
=head1 VERSION
Version 0.11
=cut
=head1 SYNOPSIS
Quick summary of what the module does.
Perhaps a little code snippet.
use Acme::Matrix;
Acme::Matrix->start();
...
ã¿ ã㨠ãã® ã ã ãä¸ ã¼ ã 㰠㣠ãã ã ã 㤠ã ã½
ãµ ãã㿠㣠ã ã ã æ£ ã ã ã³ ã¹ã ã ã ã
㯠ãªã㪠㿠ããã½ ã 㤠㷠ã ã ç´ ã ã ã³ã ã² ãµ ã¸ã
ãã ã«ã¹ã㮠㨠ã ã¹ã³ ã¼ ãã 㤠ã ã ã ã© ã ã ã©ã 㯠ãã¤
ã ãããã¤ã¿ 㪠ãã 㯠ãã ã ã¼ ã ã ã ã¹ ã¶ã ãã¼ã ãã¼ãã
ã¤ãã¯ãã㢠㪠㣠㬠ãã 㨠㳠ã ãµã¼ã
ã 㦠ã³ã ã·ã¨ 風
ã ã³ ã³ãªãã¨ã¨ ã³ ã ãã ã ã ã¨ã³ã ãª å³ ã ã§ã¨ 㪠ã«
ã ã·ãã¹ ã ãµã ã ã ã·ã ã ã© ã ã¹ ãã 㯠ã³ã ã ã
ã ã¼ ã ã ãã¨ã¨ã© ã² ã¼ã ã·ã« ã ã ã å ã ãã ã¹ã ãª
ã 㪠㫠ã¯ã ããã©ã¹ ã ã© ã«ã ã¼ã ã 㯠ãã 㤠ããªã³ ã³
ã ã¼ ã ããã ã ã ã¼ ã¯ã ã ã ã ã® ã ã ãã¹ ã
ã¹ ã ã· ã¾ ãã ã ã 㦠ã¬ã ã 㫠㨠㤠ãã ã
ã³ ã ã«ã¼ ãã ãµ ã¤é¢¨ ã«ã㬠ãã ã ã«ã 㯠ã
ã« ã¤ã¡ 㯠ã㷠㷠㯠ã³ã« ãã 㢠ã»ã ã 㡠㸠ã ã
ã ã ã ã ã 㬠㼠㼠ã ãã ã ã ã¹ ãã æ ã ã
ã ã
ã¿ãªã¸ ã¼ã ã¡ãã« ã« æ ã㪠ã 㤠風 ã ã ã ã¼ ã
ã ã ã® ã ã³ã ã¼ ã¼ ã ã³ ã 㳠㫠㣠ã ã¿ ã· ã ã¤
ã ã ã¿ ã¼ ã ã ã«ã ã¿å³ ãã ã ã ãã¤ã³ ã ã§ ã ã³
ã ã ã ã· ã
ã¿ ã ãã ã ã 㪠ã ã æ± ã³ ã ã
( run in 0.676 second using v1.01-cache-2.11-cpan-39bf76dae61 )