Acme-Matrix

 view release on metacpan or  search on metacpan

lib/Acme/Matrix.pm  view on Meta::CPAN


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";



( run in 2.173 seconds using v1.01-cache-2.11-cpan-49f99fa48dc )