1. Qiita
  2. 投稿
  3. Ruby

Rubyにて標準出力で表示するプログレスバーなどを作る

  • 4
    いいね
  • 0
    コメント

やりたいのは以下のように更新されていく標準出力を作ること

sample.gif

コツはprint "\r"。これをするとカーソル位置が行頭に戻り、一つの行を上書きしていくことができる。

話はこれで終わりなのだけどこれだけじゃつまらないので、これを使ったお遊びを2つ書きました。

プログレスバーっぽいものを表示する

def progress_bar
  num = rand(20)
  1.upto(num) do |i|
    print "\r#{'=' * i}>"
    sleep 0.2
    puts " End" if i == num
  end
end

progress_bar.gif

おみくじ

def omikuji
  kuji = %w(大吉 中吉 吉 末吉 凶 大凶)
  num = rand(30)
  0.upto(num) do |i|
    print "\r#{kuji.shuffle[i % kuji.size]}"
    sleep 0.1
  end
end

omikuji.gif