# coding: utf-8 #このプログラムのテーマは英語が苦手な人のための英単語を覚えるプログラムです。 #このプログラムを作るきっかけは友達が英単語を覚えるのが苦手と言っていたのと、自分も英単語を覚えるのが苦手なので、そんな人でも英単語を覚えられるプログラムがあれば便利だと思ったからです。 #このプログラムには英和辞典、和英辞典、確認テスト、メモ帳の4つの機能があります。英和辞典、和英辞典では一文字でもマッチするものを表示できます。確認テストではランダムで10問の問題が出るので、順番で英単語を覚える、ということもありません。メモ帳は自分の苦手な英単語をメモするなど、自分だけのメモ帳を作れるので、特に苦手な部分を絞ることができます。 #このプログラムを使ったら、かなり英単語を覚えることができました。 #このプログラムだと確認テストの範囲が広いのでメモ帳でメモした英単語をピンポイントでクイズとして出せないので、その点はまだ改良の余地があると思っています。 #他のプログラムの案として、cursesを使って写真や画像を出力すればカーナビのようなものが作れるのかなと思いました。 require'curses' include Curses require 'csv' words = CSV.read("new2.csv", headers:true) note = CSV.read("memo.csv", headers:true) init_screen cbreak begin setpos(0,0) addstr(sprintf(<<~home) メニュー 1.英和辞典 2.和英辞典 3.確認テスト 4.メモ帳 home ) menu = getstr if menu == "1" setpos(3,0) addstr(sprintf("検索(一部でもOK)")) ptn = Regexp.new(getstr) words.each do |row| if ptn =~ row["en"] addstr(sprintf("[%s]の意味は[%s]です。\n",row["en"],row["jp"])) refresh end end elsif menu == "2" setpos(3,0) addstr(sprintf("検索(一部でもOK)")) ptn = Regexp.new(getstr) words.each do |row| if ptn =~ row["jp"] addstr(sprintf("[%s]の単語は[%s]です。\n",row["jp"],row["en"])) refresh end end elsif menu == "3" n = 0 while n <= 10 x = rand(words.length) setpos(6,0) addstr(sprintf("確認テストをします。英語の綴りを正しく入れてください。")) setpos(7,0) addstr(sprintf("%s=>\n",words[x]["jp"])) refresh l = getstr setpos(8,0) addstr(sprintf("%sといれました。正解は[%s]\n",l,words[x]["en"])) refresh n+=1 end elsif menu == "4" addstr(sprintf(<<~memo) メモ帳を開きます。 何をしますか? 1.メモを確認 2.メモを追加 memo ) memo = getch if memo == "1" setpos(3,0) addstr(sprintf("メモを表示します")) refresh note.each do |row| addstr(sprintf("%s=>%s\n",row["en"],row["jp"])) refresh end elsif memo == "2" setpos(7,0) addstr(sprintf("足したい英単語:")) refresh eng = getstr addstr(sprintf("意味:")) refresh jpn = getstr CSV.open("memo.csv","a") do |c| c << [eng,jpn] end end end close_screen end