2014年7月12日土曜日

Ruby で Terminal の文字を1秒ごとに flush して、 count down する


Rubyでカウントダウン。
ターミナルの文字を1秒毎にフラッシュする。
RubyでTerminalの文字を1秒ごとにflushして、count down する

ruby 2.0.0p451 (2014-02-24 revision 45167) [x86_64-darwin13.1.0]


#!/usr/bin/env ruby
# -*- encoding: utf-8 -*-

#
def move_left
  print "\e[1D"
end

#
def del_char
  print "\e[1D"
  print " "
end

#
def del_line(n)
  #print "\e[1D"
  n.times do |x|
      del_char
      move_left
  end
end

#
def count_down(num)
  num.times do |x|
    print num - x
    sleep(1)
    n = num.to_s.length
    del_line(n)
  end
end

if __FILE__ == $0
  
  num = 15
  count_down(num)
  print "\a"
end

__END__

=begin
\e[1A <- up
\e[1B <- down
\e[1C <- right
\e[1D <- left
\a    <- beep
=end

0 コメント: