見ていただきありがとうございます。
この文の一文一文が、どういう働きをしているのかがよくわかりません。
英単語のプログラムを作っています。
一応、ファイルの中にある文を、@monndaiのなかなどにいれて表示させようとするプログラムの一部です。
ruby
1def yomikomi() 2 i = 0 3 j = 0 4 @moji =[] 5 f = open("./dat/#{@jikkoufile}","r") 6 while text = f.gets do 7 @moji[i] = text.chomp 8 i += 1 9 end 10 f.close 11 @mondaisu = i/2 12 while j <= i/2 13 eval("@q#{j} = [@moji[j*2+0],@moji[j*2+1]]") 14 j += 1 15 end 16 17 18 q = [] 19 eval("q = @q#{rand(@mondaisu)}.clone") 20 @mondai = q[0] 21 @kotae = q[1] 22 23 @matigai = open("./dat/matigai.dat","a") 24end 25 26
これ以外の文の書き方とかってありますか。
あと、eval が具体的にどんな働きをしているのかなど教えていただけると嬉しいです。
---追記
日本語を表示して、その英単語を入力して、それが正しいかどうかを判断するというプログラムを作りたいです。
原型はできているのですが、今のままだと、ファイルを、一つしか選択できないので、複数のファイルを一気に読みこんで、ランダムに表示させるということがしたいです。
休み vacation takeの過去 took catchの過去 caught seeの過去 saw 魚釣りに行く go fishing 庭 garden 伝統的な traditional 初めて for the first time am,isの過去 was areの過去 were
問題の文はこのように、日本語、英語の順に1行ずつかいてあります。
コードを全文出します。
ruby
1#! ruby -Ks 2require "color_echo" 3 4@score = 0 5@count = 0 6@naoshi = Array.new 7@jikkoufile = Array.new 8 9def yomikomi() 10 i = 0 11 j = 0 12 @moji =[] 13 f = open("./dat/#{@jikkoufile}","r") 14 while text = f.gets do 15 @moji[i] = text.chomp 16 i += 1 17 end 18 f.close 19 @mondaisu = i/2 20 while j <= i/2 21 eval("@q#{j} = [@moji[j*2+0],@moji[j*2+1]]") 22 j += 1 23 end 24 25 26 q = [] 27 eval("q = @q#{rand(@mondaisu)}.clone") 28 @mondai = q[0] 29 @kotae = q[1] 30 31 @matigai = open("./dat/matigai.dat","a") 32end 33 34 35def hon 36 37 filenames = Dir.open("dat").to_a 38 puts filenames 39 puts "reset" 40 41 puts "\n\nやりたいファイルを選択してください。" 42 @jikkoufile << gets.chomp 43 puts @jikkoufile 44 while true do 45 if filenames.include?(@jikkoufile) 46 puts " ほかにもファイルを選択しますか。 y or n" 47 filesentaku = gets.chomp 48 if filesentaku == "y" 49 puts "入力してください。" 50 jikkoufile2 = gets.chomp 51 unless filenames.include?(jikkoufile2) 52 CE.once.fg :red 53 puts "そのファイルは存在しません。" 54 else 55 @jikkoufile.push(jikkoufile2) 56 end 57 redo 58 elsif filesentaku == "n" 59 break 60 else 61 CE.once.fg :red 62 puts "入力するならyを、しないならnを入力してください。" 63 redo 64 end 65 end 66 67 if @jikkoufile == "reset" 68 puts "Reset matigai.dat" 69 File.open("dat/matigai.dat","w") 70 sleep 2 71 exit 72 end 73 CE.once.fg :red 74 puts "再入力してください" 75 @jikkoufile << gets.chomp 76 end 77 78 puts "何回実行しますか?" 79 @a = gets.chomp.to_i 80 puts "次の日本語を英語に直しなさい" 81 count = 0 82 while true do 83 yomikomi 84 puts @mondai 85 s = gets.chomp 86 87 puts "正解は#{@kotae}です。" 88 sleep 1 89 90 if s == @kotae 91 puts "正解です " 92 @score = @score + 1 93 else 94 @count = @count + 1 95 CE.once.fg :red 96 puts "間違いです。\n" 97 @naoshi.push(@mondai,@kotae) 98 end 99 count = count + 1 100 if count >= @a 101 puts "\n\n終了です","\n#{@a}問中、#{@score}問正解しました" 102 unless @naoshi.empty? #empty? は何もなかったらtrueを返す 103 CE.once.fg :index47 104 puts "間違えた問題 復習しておこう!" 105 CE.bg :blue 106 puts @naoshi 107 @matigai.puts @naoshi 108 else 109 CE.rainbow 110 puts "----------------------------------------------" 111 puts "全問正解!!おめでとう!" 112 puts "----------------------------------------------" 113 end 114 exit 115 end 116 end 117end 118hon 119
インデントとかをうまく使えてなくて読みにくいですが、すいません。
回答2件
あなたの回答
tips
プレビュー