昔友達と一緒に作った文なんですが、今作っているプログラムに使えないかと思い質問させていただきます。下記のような文なのですが今回も、外部ファイルから問題データを読み込んで、画面に表示したいのですが、この読み込んだものはどの部分でどのように表示されるようになっているのでしょうか。
この読み込んだものを変数に当てはめて表示するにはどうしたらいいでしょうか。
コメントを付けているもののほとんどが理解できません。詳しく教えていただければ嬉しく思います。
だいたい大事だとおもったところだけ載せています。すべての文が必要であれば、コメントいただけるとありがたいです。どうかよろしくお願いします。
ruby
1#...省略 2 3def yomikomi() #外部ファイルから問題データを読み込む 4 i = 0 5 j = 0 6 mondai = "mondai1.dat" #外部データファイル名(7行で1問題セットになっている) 7 moji = [] 8 $mondaisu = 0 #問題数-1の値 9 f = open("./dat/#{mondai}") 10 while text = f.gets do 11 moji[i] = text.chomp #データに含まれる改行コードの削除 12 i += 1 13 end 14 f.close 15 #問題データの行数 iを7で割ったもの 16 $mondaisu = i/7 17 while j <= i/7 18 eval("$q#{j} = [ moji[j*7+0],moji[j*7+1],moji[j*7+2],moji[j*7+3],moji[j*7+4],moji[j*7+5],moji[j*7+6] ]") 19 j += 1 20 end 21end 22 23#...省略 24def teki #敵の質問の場面 25 q = [];spc = " " 26 oto2(60) 27 win3 = Curses::Window.new(10, 78, 14, 1) 28 win3.box(?|,?-,?*) 29 win3.setpos(1, 1); win3.addstr("敵が質問を仕掛けてきた。どうする?") 30 win3.setpos(2, 1); win3.addstr("1:無視してそのまま進む 2:質問を受ける") 31 win3.setpos(3, 1) 32 win3.refresh 33 ans = win3.getch.to_i 34 if ans == 1 then 35 $fighter["kougeki"] -= 20 36 win3.setpos(3, 3); win3.addstr("攻撃力20ポイント減!") 37 win3.refresh 38 sleep 2 39 win3.setpos(1, 1); win3.addstr(spc) 40 win3.setpos(2, 1); win3.addstr(spc) 41 win3.refresh 42 end 43 if ans == 2 then 44 eval("q = $q#{rand($mondaisu)}.clone") 45 win3.setpos(1, 1); win3.addstr("それでは質問を始める! ") 46 win3.setpos(2, 1); win3.addstr(spc) 47 win3.refresh 48 sleep 1 49 win3.setpos(2, 1); win3.addstr(q[0]) #質問を表示する場面 50 win3.setpos(3, 1); win3.addstr(q[1]) 51 win3.setpos(4, 1); win3.addstr(q[2]) 52 win3.setpos(5, 1); win3.addstr(q[3]) 53 win3.setpos(6, 1); win3.addstr(q[4]) 54 win3.setpos(7, 1); win3.addstr(q[5]) 55 win3.setpos(8, 5) 56 ans = win3.getch 57 if ans == q[6] then 58 $fighter["kougeki"] += 20 59 win3.setpos(8, 10) 60 sleep 1 61 win3.addstr("正解だ! 攻撃力20ポイント回復!") 62 else 63 $fighter["kougeki"] -= 25 64 win3.setpos(8, 10) 65 sleep 1 66 win3.addstr("間違い! 攻撃力25ポイント減!") 67 end 68 end 69 win3.refresh 70 sleep 2 71 win3.setpos(1, 1); win3.addstr(spc) #画面をクリア 72 win3.setpos(2, 1); win3.addstr(spc) 73 win3.setpos(3, 1); win3.addstr(spc) 74 win3.setpos(4, 1); win3.addstr(spc) 75 win3.setpos(5, 1); win3.addstr(spc) 76 win3.setpos(6, 1); win3.addstr(spc) 77 win3.setpos(7, 1); win3.addstr(spc) 78 win3.setpos(8, 5); win3.refresh 79end 80 81#...省略 82 83 84 85
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/25 00:47
2016/06/25 00:54
2016/06/27 10:59
2016/06/28 08:39
2016/06/28 08:40
2016/06/28 10:06