感想
とても難しかったです。もう少しできるようになりたいです。

プログラムの説明は、すべて#になっています。



実行結果

ゴロゴロ
ピカッ!!
まだ落ちないまだ落ちないまだ落ちない
ドカーン!!自分から1020[m]に落雷:遠くに雷が落ちた
まだ雷雲がありますか?(1:yes,0:no)?
0
                                 


kaminari.rb

#!/usr/koeki/bin/ruby
# -*- coding: utf-8 -*-

def color(code)
  if code == 0 then  #赤
    print"\e[31m"
  elsif code == 1 then  #緑
    print"\e[32m"
  elsif code == 2 then  #青
    print"\e[34m"
  elsif code == 3 then  #黄
    print"\e[33m"
  else  #白
    print"\e[37m"
  end
end


def kaminari()
  #   0秒後   ,   1秒後   ,   2秒後   ,   3秒後
  result = ["自分に雷が落ちた","お母さんの雷が落ちた","近くで雷が落ちた","遠くに雷が落ちた"]

  color(1) #文字を緑に設定
  print"ゴロゴロ\n"

  sleep(3) #3秒休む

  color(3) #文字を黄に設定
  print"ピカッ!!\n" #雷が落ちるまで"まだ落ちない"を1秒間隔で表示
  sleep(2) #2秒休む

  srand
  second = rand(4) #0から3の乱数(雷が光ってから落ちるまでの秒数)
  j = second #秒数をjに代入
  color(2) #文字を青に設定
  while j>0 do
    print"まだ落ちない"
    sleep(2) #2秒休む
    j = j - 1 #1回ずつ減算
  end

  position = second*340 #距離を計算する(距離 = 秒数 × 340[m])
  color(0) #文字を赤に設定
  printf("\nドカーン!!自分から%d[m]に落雷:%s\n",position,result[second])
  color(4) #文字を白に設定
  sleep(3) #3秒休む
end

def cls()
  print"\e[2J" #画面消去
  printf("\e[%d;%dH",0,1) #カーソルを左上に移動
end


#雷雲があるか問い合わせ
def toiawase()
  color(4) #文字を白に設定
  print"まだ雷雲がありますか?(1:yes,0:no)?\n"
kumo = gets.chomp!.to_i
end


#メイン
while true
  cls #画面消去、カーソルを左上に移動

  kaminari #雷

  #まだ雷雲があるか問い合わせ、0だったら終了
  if toiawase == 0
  then break #終了
  end
end