質問編集履歴

2

追記

2017/04/20 06:33

投稿

yusuke.
yusuke.

スコア66

test CHANGED
File without changes
test CHANGED
@@ -68,6 +68,10 @@
68
68
 
69
69
  ---追記
70
70
 
71
+ 日本語を表示して、その英単語を入力して、それが正しいかどうかを判断するというプログラムを作りたいです。
72
+
73
+ 原型はできているのですが、今のままだと、ファイルを、一つしか選択できないので、複数のファイルを一気に読みこんで、ランダムに表示させるということがしたいです。
74
+
71
75
  ```ここに言語を入力
72
76
 
73
77
  休み
@@ -113,3 +117,251 @@
113
117
  ```
114
118
 
115
119
  問題の文はこのように、日本語、英語の順に1行ずつかいてあります。
120
+
121
+
122
+
123
+ コードを全文出します。
124
+
125
+ ```ruby
126
+
127
+ #! ruby -Ks
128
+
129
+ require "color_echo"
130
+
131
+
132
+
133
+ @score = 0
134
+
135
+ @count = 0
136
+
137
+ @naoshi = Array.new
138
+
139
+ @jikkoufile = Array.new
140
+
141
+
142
+
143
+ def yomikomi()
144
+
145
+ i = 0
146
+
147
+ j = 0
148
+
149
+ @moji =[]
150
+
151
+ f = open("./dat/#{@jikkoufile}","r")
152
+
153
+ while text = f.gets do
154
+
155
+ @moji[i] = text.chomp
156
+
157
+ i += 1
158
+
159
+ end
160
+
161
+ f.close
162
+
163
+ @mondaisu = i/2
164
+
165
+ while j <= i/2
166
+
167
+ eval("@q#{j} = [@moji[j*2+0],@moji[j*2+1]]")
168
+
169
+ j += 1
170
+
171
+ end
172
+
173
+
174
+
175
+
176
+
177
+ q = []
178
+
179
+ eval("q = @q#{rand(@mondaisu)}.clone")
180
+
181
+ @mondai = q[0]
182
+
183
+ @kotae = q[1]
184
+
185
+
186
+
187
+ @matigai = open("./dat/matigai.dat","a")
188
+
189
+ end
190
+
191
+
192
+
193
+
194
+
195
+ def hon
196
+
197
+
198
+
199
+ filenames = Dir.open("dat").to_a
200
+
201
+ puts filenames
202
+
203
+ puts "reset"
204
+
205
+
206
+
207
+ puts "\n\nやりたいファイルを選択してください。"
208
+
209
+ @jikkoufile << gets.chomp
210
+
211
+ puts @jikkoufile
212
+
213
+ while true do
214
+
215
+ if filenames.include?(@jikkoufile)
216
+
217
+ puts " ほかにもファイルを選択しますか。 y or n"
218
+
219
+ filesentaku = gets.chomp
220
+
221
+ if filesentaku == "y"
222
+
223
+ puts "入力してください。"
224
+
225
+ jikkoufile2 = gets.chomp
226
+
227
+ unless filenames.include?(jikkoufile2)
228
+
229
+ CE.once.fg :red
230
+
231
+ puts "そのファイルは存在しません。"
232
+
233
+ else
234
+
235
+ @jikkoufile.push(jikkoufile2)
236
+
237
+ end
238
+
239
+ redo
240
+
241
+ elsif filesentaku == "n"
242
+
243
+ break
244
+
245
+ else
246
+
247
+ CE.once.fg :red
248
+
249
+ puts "入力するならyを、しないならnを入力してください。"
250
+
251
+ redo
252
+
253
+ end
254
+
255
+ end
256
+
257
+
258
+
259
+ if @jikkoufile == "reset"
260
+
261
+ puts "Reset matigai.dat"
262
+
263
+ File.open("dat/matigai.dat","w")
264
+
265
+ sleep 2
266
+
267
+ exit
268
+
269
+ end
270
+
271
+ CE.once.fg :red
272
+
273
+ puts "再入力してください"
274
+
275
+ @jikkoufile << gets.chomp
276
+
277
+ end
278
+
279
+
280
+
281
+ puts "何回実行しますか?"
282
+
283
+ @a = gets.chomp.to_i
284
+
285
+ puts "次の日本語を英語に直しなさい"
286
+
287
+ count = 0
288
+
289
+ while true do
290
+
291
+ yomikomi
292
+
293
+ puts @mondai
294
+
295
+ s = gets.chomp
296
+
297
+
298
+
299
+ puts "正解は#{@kotae}です。"
300
+
301
+ sleep 1
302
+
303
+
304
+
305
+ if s == @kotae
306
+
307
+ puts "正解です "
308
+
309
+ @score = @score + 1
310
+
311
+ else
312
+
313
+ @count = @count + 1
314
+
315
+ CE.once.fg :red
316
+
317
+ puts "間違いです。\n"
318
+
319
+ @naoshi.push(@mondai,@kotae)
320
+
321
+ end
322
+
323
+ count = count + 1
324
+
325
+ if count >= @a
326
+
327
+ puts "\n\n終了です","\n#{@a}問中、#{@score}問正解しました"
328
+
329
+ unless @naoshi.empty? #empty? は何もなかったらtrueを返す
330
+
331
+ CE.once.fg :index47
332
+
333
+ puts "間違えた問題 復習しておこう!"
334
+
335
+ CE.bg :blue
336
+
337
+ puts @naoshi
338
+
339
+ @matigai.puts @naoshi
340
+
341
+ else
342
+
343
+ CE.rainbow
344
+
345
+ puts "----------------------------------------------"
346
+
347
+ puts "全問正解!!おめでとう!"
348
+
349
+ puts "----------------------------------------------"
350
+
351
+ end
352
+
353
+ exit
354
+
355
+ end
356
+
357
+ end
358
+
359
+ end
360
+
361
+ hon
362
+
363
+
364
+
365
+ ```
366
+
367
+ インデントとかをうまく使えてなくて読みにくいですが、すいません。

1

追記

2017/04/20 06:33

投稿

yusuke.
yusuke.

スコア66

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,8 @@
1
1
  見ていただきありがとうございます。
2
2
 
3
3
  この文の一文一文が、どういう働きをしているのかがよくわかりません。
4
+
5
+ 英単語のプログラムを作っています。
4
6
 
5
7
  一応、ファイルの中にある文を、@monndaiのなかなどにいれて表示させようとするプログラムの一部です。
6
8
 
@@ -63,3 +65,51 @@
63
65
  これ以外の文の書き方とかってありますか。
64
66
 
65
67
  あと、eval が具体的にどんな働きをしているのかなど教えていただけると嬉しいです。
68
+
69
+ ---追記
70
+
71
+ ```ここに言語を入力
72
+
73
+ 休み
74
+
75
+ vacation
76
+
77
+ takeの過去
78
+
79
+ took
80
+
81
+ catchの過去
82
+
83
+ caught
84
+
85
+ seeの過去
86
+
87
+ saw
88
+
89
+ 魚釣りに行く
90
+
91
+ go fishing
92
+
93
+
94
+
95
+ garden
96
+
97
+ 伝統的な
98
+
99
+ traditional
100
+
101
+ 初めて
102
+
103
+ for the first time
104
+
105
+ am,isの過去
106
+
107
+ was
108
+
109
+ areの過去
110
+
111
+ were
112
+
113
+ ```
114
+
115
+ 問題の文はこのように、日本語、英語の順に1行ずつかいてあります。