カーソル移動で標準出力を書き換えるのがマイブームです。
ソースコード
sin_ary = (1..180).each.inject([]) do |ary, n|
sin = (Math.sin(n * (Math::PI / 180)) * 100).to_i
ary << ("*" * sin).ljust(100)
end
line = 20
begin
loop do
180.times do |i|
(0..line).each{ |j| puts sin_ary[i - j] }
printf "\e[#{line + 1}A"; STDOUT.flush; sleep 0.01
end
end
rescue Interrupt
exit 0
end
実行結果
line変数で行数を変更できます。

0 件のコメント:
コメントを投稿