line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package Acme::Matrix; |
2
|
|
|
|
|
|
|
our $VERSION = '0.01'; |
3
|
1
|
|
|
1
|
|
66623
|
use 5.006; use strict; use warnings; |
|
1
|
|
|
1
|
|
5
|
|
|
1
|
|
|
1
|
|
5
|
|
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
33
|
|
|
1
|
|
|
|
|
5
|
|
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
29
|
|
4
|
1
|
|
|
1
|
|
489
|
use Term::ReadKey; |
|
1
|
|
|
|
|
2069
|
|
|
1
|
|
|
|
|
374
|
|
5
|
|
|
|
|
|
|
|
6
|
|
|
|
|
|
|
our (@WORDS, @CHARS); |
7
|
|
|
|
|
|
|
BEGIN { |
8
|
1
|
|
|
1
|
|
33
|
$SIG{INT} = \&shutdown; |
9
|
1
|
|
|
|
|
34
|
@WORDS = ( |
10
|
|
|
|
|
|
|
[qw/し ゅ く う ん/], |
11
|
|
|
|
|
|
|
[qw/不 正 直/], |
12
|
|
|
|
|
|
|
[qw/き い っ ぽ ん/], |
13
|
|
|
|
|
|
|
[qw/憎 し み を 抱 く/], |
14
|
|
|
|
|
|
|
[qw/だ ら く ふ は い/], |
15
|
|
|
|
|
|
|
[qw/ふ と ど き/], |
16
|
|
|
|
|
|
|
[qw/は ち ゃ め ち ゃ/], |
17
|
|
|
|
|
|
|
[qw/た い ぎ ゃ く ひ ど う/], |
18
|
|
|
|
|
|
|
[qw/ラ ッ キ ー/], |
19
|
|
|
|
|
|
|
[qw/し り が お も い/], |
20
|
|
|
|
|
|
|
[qw/リ ス ペ ク ト/], |
21
|
|
|
|
|
|
|
[qw/ム ー ン/], |
22
|
|
|
|
|
|
|
[qw/に っ て ん/], |
23
|
|
|
|
|
|
|
[qw/か み の み こ と/], |
24
|
|
|
|
|
|
|
[qw/と く し ょ く/], |
25
|
|
|
|
|
|
|
[qw/ス キ ャ ン ダ ラ ス/], |
26
|
|
|
|
|
|
|
[qw/ぜ に か ね/], |
27
|
|
|
|
|
|
|
[qw/エ ク ス プ ロ イ テ ー シ ョ ン/], |
28
|
|
|
|
|
|
|
[qw/た く さ ん/], |
29
|
|
|
|
|
|
|
[qw/マ イ ン ド/], |
30
|
|
|
|
|
|
|
[qw/味 が 分 か る/], |
31
|
|
|
|
|
|
|
[qw/に お い が す る/], |
32
|
|
|
|
|
|
|
[qw/感 じ て/], |
33
|
|
|
|
|
|
|
[qw/リ ッ ス ン/], |
34
|
|
|
|
|
|
|
[qw/風 に た な び く/], |
35
|
|
|
|
|
|
|
[qw/シ ー ク レ ッ ト/], |
36
|
|
|
|
|
|
|
[qw/こ う ざ か か り/], |
37
|
|
|
|
|
|
|
[qw/じ つ ご と/], |
38
|
|
|
|
|
|
|
[qw/シ ー カ ー/], |
39
|
|
|
|
|
|
|
[qw/イ マ ジ ネ ー シ ョ ン/] |
40
|
|
|
|
|
|
|
); |
41
|
1
|
|
|
|
|
365
|
@CHARS = qw/ |
42
|
|
|
|
|
|
|
あ い う え お か き く け こ さ し す せ そ た ち つ て と |
43
|
|
|
|
|
|
|
な に ぬ ね の は ひ ふ へ ほ ま み む め も ら り る れ ろ |
44
|
|
|
|
|
|
|
ア イ ウ エ オ カ キ ク ケ コ ガ ギ グ ゲ ゴ サ シ ス セ ソ |
45
|
|
|
|
|
|
|
ザ ジ ズ ゼ ゾ タ チ ツ テ ト ダ ヂ ヅ デ ド ナ ニ ヌ ネ ノ |
46
|
|
|
|
|
|
|
ハ ヒ フ ヘ ホ バ ビ ブ ベ ボ パ ピ プ ペ ポ マ ミ ム メ モ |
47
|
|
|
|
|
|
|
/; |
48
|
|
|
|
|
|
|
} |
49
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
sub start { |
51
|
0
|
|
|
0
|
0
|
|
my ($pkg, %args) = @_; |
52
|
0
|
0
|
|
|
|
|
@WORDS = @{$args{words}} if ($args{words}); |
|
0
|
|
|
|
|
|
|
53
|
0
|
0
|
|
|
|
|
@CHARS = @{$args{chars}} if ($args{chars}); |
|
0
|
|
|
|
|
|
|
54
|
0
|
|
|
|
|
|
my ($wchar, $hchar) = GetTerminalSize(); |
55
|
0
|
|
0
|
|
|
|
$wchar = $wchar * ($args{offset} || 0.49); |
56
|
|
|
|
|
|
|
my %word_lines = ( |
57
|
0
|
|
|
|
|
|
map { $_ => [] } 0 .. $wchar |
|
0
|
|
|
|
|
|
|
58
|
|
|
|
|
|
|
); |
59
|
0
|
|
|
|
|
|
print "\033[1J"; |
60
|
0
|
|
|
|
|
|
print "\033[48;5;232m"; |
61
|
0
|
|
|
|
|
|
while (1) { |
62
|
0
|
|
|
|
|
|
for (0..$wchar) { |
63
|
0
|
0
|
|
|
|
|
if (int(rand(5) + 0.5) > 4) { |
64
|
0
|
|
|
|
|
|
push @{$word_lines{$_}}, (int(rand(1) + 0.5)) |
65
|
|
|
|
|
|
|
? "\033[38;5;34m" . $CHARS[int(rand(scalar @CHARS))] |
66
|
0
|
0
|
|
|
|
|
: map { "\033[38;5;46m" . $_ } @{ $WORDS[int(rand(scalar @WORDS))] }; |
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
67
|
|
|
|
|
|
|
} |
68
|
0
|
|
0
|
|
|
|
print shift(@{$word_lines{$_}}) || " "; |
69
|
|
|
|
|
|
|
} |
70
|
0
|
|
|
|
|
|
print "\n"; |
71
|
0
|
|
|
|
|
|
select(undef, undef, undef, 0.01); |
72
|
|
|
|
|
|
|
} |
73
|
|
|
|
|
|
|
} |
74
|
|
|
|
|
|
|
|
75
|
|
|
|
|
|
|
sub shutdown { |
76
|
0
|
|
|
0
|
0
|
|
print "\033[0m"; |
77
|
0
|
|
|
|
|
|
print "\033c"; |
78
|
0
|
|
|
|
|
|
exit; |
79
|
|
|
|
|
|
|
} |
80
|
|
|
|
|
|
|
|
81
|
|
|
|
|
|
|
=head1 NAME |
82
|
|
|
|
|
|
|
|
83
|
|
|
|
|
|
|
Acme::Matrix - Heavenly digital rain |
84
|
|
|
|
|
|
|
|
85
|
|
|
|
|
|
|
=head1 VERSION |
86
|
|
|
|
|
|
|
|
87
|
|
|
|
|
|
|
Version 0.01 |
88
|
|
|
|
|
|
|
|
89
|
|
|
|
|
|
|
=cut |
90
|
|
|
|
|
|
|
|
91
|
|
|
|
|
|
|
=head1 SYNOPSIS |
92
|
|
|
|
|
|
|
|
93
|
|
|
|
|
|
|
Quick summary of what the module does. |
94
|
|
|
|
|
|
|
|
95
|
|
|
|
|
|
|
Perhaps a little code snippet. |
96
|
|
|
|
|
|
|
|
97
|
|
|
|
|
|
|
use Acme::Matrix; |
98
|
|
|
|
|
|
|
|
99
|
|
|
|
|
|
|
Acme::Matrix->start(); |
100
|
|
|
|
|
|
|
|
101
|
|
|
|
|
|
|
... |
102
|
|
|
|
|
|
|
|
103
|
|
|
|
|
|
|
タ くと うの い う ん不 ー さ グ ャ ッり ゃ ら イ ネ ソ |
104
|
|
|
|
|
|
|
ふ かデみ っ あ マ し 正 し ん ン スが く く マ |
105
|
|
|
|
|
|
|
は オぜリ み こえぽ そ イ シ り じ 直 り ダ ンお ひ ふ ジじ |
106
|
|
|
|
|
|
|
りい にスじの と ん スン ー がた つ ム が も ラ ね も どムは ネつ |
107
|
|
|
|
|
|
|
デ マかペつみ オ キド ク おい ご ー お ムし ス ザい うーい バーごる |
108
|
|
|
|
|
|
|
イねクごこモ オ ャ レ もぎ と ン も ふーゅ ね て ンす シと 風 |
109
|
|
|
|
|
|
|
た コ ンリトとと ン ッ いゃ た い とンく リ 味 る ョと リ に |
110
|
|
|
|
|
|
|
く シドス ホ ふダ ト く シく ぜ ど う ス ヌが は ンく ッ た |
111
|
|
|
|
|
|
|
さ ー ペ も しととラ ひ ーさ シに き ん ペ 分 じ ダし スさ な |
112
|
|
|
|
|
|
|
ん リ カ クボ りくどス だ ど カん ーか た ク バか つ ょリン び |
113
|
|
|
|
|
|
|
ッ ー ト がしき ら う ー クね く ト ネ の る ご くス く |
114
|
|
|
|
|
|
|
ス く シ ま おょ く マ て レプ さ に と イ ベペ た |
115
|
|
|
|
|
|
|
ン え カー もく ふ イ風 にッガ んチ お にマ ク く |
116
|
|
|
|
|
|
|
に イち ク いシ シ は ンに おト モ セツ い メ ジ ト さ |
117
|
|
|
|
|
|
|
お し か マ ムレ ー ー い ドた い マ ス がら 憎 ネ ん |
118
|
|
|
|
|
|
|
い ゅ みなジ ーッ ちヘカ カ 憎 えな が イ 風 キ す し ー マ |
119
|
|
|
|
|
|
|
が く の ネ ント ー ー し び す ン に ャ る み シ ビ イ |
120
|
|
|
|
|
|
|
す う み ー し る カか み味 くた る ド たつン を ョ い ン |
121
|
|
|
|
|
|
|
る ん こ シ ゅ み ム をが い め な ダ ビ 抱 ン フ ド |
122
|
|
|
|
|
|
|
|
123
|
|
|
|
|
|
|
Because of the bottom up nature It's difficult to actually make it rain inside a terminal efficiently. Thus my rain is heavenly. |
124
|
|
|
|
|
|
|
|
125
|
|
|
|
|
|
|
=head1 AUTHOR |
126
|
|
|
|
|
|
|
|
127
|
|
|
|
|
|
|
LNATION, C<< >> |
128
|
|
|
|
|
|
|
|
129
|
|
|
|
|
|
|
=head1 BUGS |
130
|
|
|
|
|
|
|
|
131
|
|
|
|
|
|
|
Please report any bugs or feature requests to C, or through |
132
|
|
|
|
|
|
|
the web interface at L. I will be notified, and then you'll |
133
|
|
|
|
|
|
|
automatically be notified of progress on your bug as I make changes. |
134
|
|
|
|
|
|
|
|
135
|
|
|
|
|
|
|
=head1 SUPPORT |
136
|
|
|
|
|
|
|
|
137
|
|
|
|
|
|
|
You can find documentation for this module with the perldoc command. |
138
|
|
|
|
|
|
|
|
139
|
|
|
|
|
|
|
perldoc Acme::Matrix |
140
|
|
|
|
|
|
|
|
141
|
|
|
|
|
|
|
You can also look for information at: |
142
|
|
|
|
|
|
|
|
143
|
|
|
|
|
|
|
=over 4 |
144
|
|
|
|
|
|
|
|
145
|
|
|
|
|
|
|
=item * RT: CPAN's request tracker (report bugs here) |
146
|
|
|
|
|
|
|
|
147
|
|
|
|
|
|
|
L |
148
|
|
|
|
|
|
|
|
149
|
|
|
|
|
|
|
=item * CPAN Ratings |
150
|
|
|
|
|
|
|
|
151
|
|
|
|
|
|
|
L |
152
|
|
|
|
|
|
|
|
153
|
|
|
|
|
|
|
=item * Search CPAN |
154
|
|
|
|
|
|
|
|
155
|
|
|
|
|
|
|
L |
156
|
|
|
|
|
|
|
|
157
|
|
|
|
|
|
|
=back |
158
|
|
|
|
|
|
|
|
159
|
|
|
|
|
|
|
=head1 ACKNOWLEDGEMENTS |
160
|
|
|
|
|
|
|
|
161
|
|
|
|
|
|
|
=head1 LICENSE AND COPYRIGHT |
162
|
|
|
|
|
|
|
|
163
|
|
|
|
|
|
|
This software is Copyright (c) 2023 by LNATION. |
164
|
|
|
|
|
|
|
|
165
|
|
|
|
|
|
|
This is free software, licensed under: |
166
|
|
|
|
|
|
|
|
167
|
|
|
|
|
|
|
The Artistic License 2.0 (GPL Compatible) |
168
|
|
|
|
|
|
|
|
169
|
|
|
|
|
|
|
=cut |
170
|
|
|
|
|
|
|
|
171
|
|
|
|
|
|
|
1; # End of Acme::Matrix |