逐字显示

很多年前, 还在混论坛的时候, 用 Perl 写了一段逐字显示的动画。前几天使用 Raku 重写了一下, 使用了 Terminal::Print 模块。

效果是这样的:

img

代码是这样的:

use Terminal::Print <T>;

T.initialize-screen;
my @lines = $=finish.lines;
my $columns = @lines.elems + 85;

for @lines -> $line {
    my @words = $line.comb;
    my $row = 5;

    for @words -> $word {
        T.print-cell($columns, $row, $word);
        $row += 1;
        sleep 0.1;
    }
    $columns -= 3;
}

T.shutdown-screen;

=finish
    星月神话
我的一生最美好的场景
就是遇见你
在人海茫茫中静静凝望着你
陌生又熟悉
尽管呼吸着同一天空的气息
却无法拥抱到你
如果转换了时空身份和姓名
但愿认得你眼睛
千年之后的你会在哪里
身边有怎样风景
我们的故事并不算美丽
却如此难以忘记
尽管呼吸着同一天空的气息
却无法拥抱到你
如果转换了时空身份和姓名
但愿认得你眼睛
千年之后的你会在哪里
身边有怎样风景
我们的故事并不算美丽
却如此难以忘记
如果当初勇敢的在一起
会不会不同结局
你会不会也有千言万语
埋在沉默的梦里

然后我花了一些时间, 把这段代码封装成一个模块, 又加上了淡出效果。这也算了结了几年前的一个小小的想法, 如今终于有机会实现了。所以, 只要拖延的时间足够久, 想要的效果就能轻易实现。先站在别人的肩膀上, 等着别人写好基础模块, 哈哈哈。

关于这个动画的效果图, 等录制好之后再贴在这里。无聊且又没什么用的代码又增加了一丢丢。

焉知非鱼 /
prev:空调与冰镇雪碧 next: 如何有效消灭蟑螂