Newer
Older
Ruby / toshikoshi.rb
#!/usr/bin/evn ruby
# coding: utf-8 -*-

x=Time.now.year
def play(sound)
  spawn "ogg123 -q "+sound
end
def next1sec(sec)
  while sec == Time.now.sec
    sleep 0.03		# 秒が変わるまで待機する
  end
  Time.now.sec		# 新しい秒を返しておく(次に使う)
end
while x==Time.now.year  #年が同じ間繰り返す
  now=Time.now
  sec=now.sec
  just=now+60   #1分後
  jh=just.hour  #一分後の時
  jm=just.min   #一分後の分
  y=now.year

  while Time.now.min !=jm
    sec=next1sec(sec)  #秒の区切りまで待つ
  printf("%s\r", Time.now)	# \r は行頭に戻る
    if sec%30 == 0	# 30で割り切れる0秒か30秒なら
      play("po.ogg")   #ポーン
    elsif sec%30 == 20	# 余りが20なら30秒区切りの10秒前
play("katsu.ogg")

  if sec < 30	# 何時何分30秒 の予告
        printf("只今から%d時%d分30秒をお知らせします\n", now.hour, now.min)
      else		# 次の分の予告
        printf("只今から%d時%d分ちょうどをお知らせします\n", jh, jm)
      end
    elsif sec%30 > 26	# 3秒前の「プ」
      play("pu.ogg")
    else
      play("kotsu.ogg")# 特に何もないときは「コツ」
    end
  end
end

puts("HAPPY NEW YEAR!")
system("display -geometry +0+0 happy.jpg")