カーソル移動で標準出力を書き換えるのがマイブームです。
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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 件のコメント:
コメントを投稿