timer.rb 0.2

以前ひまつぶしにつくった個人的に気に入ってるやつをちょっと改造した。毎回パターンがランダムに変わるようになった。

#!/usr/bin/ruby
# timer.rb

PATTERNS = [
  "> ",
  "|~^=-()\'&%$#\"!+*;:@`[]{}|<>,.?_",
  ".:",
  "bdpq",
  "QO",
  "zzzZ",
  "..........oooO",
  "--------------------------------+*",
  "                                +*"
]

GOAL = ARGV.size.zero? ? 30 : ARGV.shift.to_i
START = Time.now
pattern = PATTERNS[rand(PATTERNS.size)]
loop do
  progress = (Time.now - START).to_i
  print "\r|"
  progress.times do
    print pattern[rand(pattern.size)].chr
  end
  print "| #{progress}"
  STDOUT.flush
  break if progress >= GOAL
  sleep 0.03
end
puts "\a"

使い方

指定した秒数をカウントします。30秒ならこんな感じ。

ruby timer.rb 30