u16suzuの blog

日々学んだことのメモブログです。

1294001544**[Ruby]Rubyで英単語覚えるスクリプト

Rubyで英語の単語を覚えるためのスクリプトを書きました。
同じフォルダにあるCSVファイルから単語を読み込んで、問題を出します。問題は日本語で表示され、答えを英語で入力します。

「exit」と入力するか、全ての単語に正解すると終了。
CSVファイルには、「英語,日本語」の順番で書きます。順番を逆にすれば、英語の和訳を答える問題になるかも。

元ネタはid:higeponさんの↓の記事です。
http://d.hatena.ne.jp/higepon/20100109/1263013721#tb

#! ruby -Ks

require 'csv'

# 単語クラス
class Word
  def initialize( eng, jpn )
    @eng = eng
    @jpn = jpn
  end

  def getEng
    return @eng
  end
  
  def getJpn
    return @jpn
  end
end

# csvから読んだ単語を格納
@a = Array.new()

# csvから読み込み
def readCSV
  CSV.open('file.csv', 'r') do |row|
    #row[0]がengで row[1]はjpn
    w = Word.new( row[0].to_s , row[1].to_s )
    @a << w
  end
end

# 英語問題を出す
def makeQuestionEng
  r = rand(@a.length)
  problemWord = @a.at(r)

  # 問題を出す
  puts problemWord.getJpn

  # 回答を入力
  input = gets.chomp

  # 回答が正解かチェック
  if( input == problemWord.getEng )
    puts "ok"
    @a.delete_at(r)
  else
    puts "no 正解は " + problemWord.getEng
  end

  # 終了マンドか?
  if( input == "exit" )
    return 0
  end
  
  # 全問終了か?
  if( @a.length == 0)
    puts "Congratulation!"
    return 0
  end
end

# メインループ
def main
  count = 0

  readCSV
  puts "Language study script"

  while( makeQuestionEng != 0 || count >= 10 )
    count +=1
  end
  
  puts "see you..."
end

# 実行
main