Newer
Older
Ruby / eigo.rb
@SATO Kenjiro SATO Kenjiro on 17 Jan 2023 2 KB 2023-01-17 20:35:09
# coding: utf-8

#このプログラムのテーマは英語が苦手な人のための英単語を覚えるプログラムです。
#このプログラムを作るきっかけは友達が英単語を覚えるのが苦手と言っていたのと、自分も英単語を覚えるのが苦手なので、そんな人でも英単語を覚えられるプログラムがあれば便利だと思ったからです。
#このプログラムは英和辞典と確認テストができます。英和辞典では
#このプログラムを使ったらかなり英単語を覚えることができました。
#

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)"))
   pattern = STDIN.getch
   regexp = Regexp.new(pattern,nil)
   
     words.each do |row|
       if regexp =~ row["en"]
       addstr(sprintf("[%s]の意味は[%s]です。\n",row["en"],row["jp"]))
     refresh
       end
     end
elsif menu == "2"
  setpos(3,0)
   addstr(sprintf("検索(一部でもOK)"))
   pattern = STDIN.getc
   regexp = Regexp.new(pattern,nil)
   
     words.each do |row|
       if regexp =~ 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