前提・実現したいこと
3 x 3、4 x 4、5 x 5、6 x 6のどれかを選択して遊ぶ、○×ゲームを作成しています。
ターミナルで実行すると、
1.endの数が足りないとのエラーが出ます。最後に一つ追加すれば正常に作動するので大したことではありませんが、endが一つ多いことに違和感を覚えてしまいます。どこかのendが文法的に誤っているなどで足りないのでしょうか?
2.最後に結果として、oとxで埋まったマス目が表示されるのですが、6 x 6を選択した時、ゲーム開始時にもそれが表示されてしまいます。その部分のifブロックに問題があると睨んでいますが解決しておりません。お助けください。
発生している問題・エラーメッセージ
mb.rb:79: syntax error, unexpected end-of-input, expecting `end'
該当のソースコード
Ruby
1three = "123\n456\n789\n\n" 2four = "1234\n5678\n90ab\ncdef\n\n" 3five = "12345\n67890\nabcde\nfghig\nklmno\n\n" 4six = "123456\n7890ab\ncdefgh\nijklmn\nopqrst\nuvwxyz\n\n" 5 6 7#3 x 3, 4 x 4, 5 x 5, 6 x 6のマス目から選ばせる 8print "Which? >>>" 9number1 = gets.to_i 10 11 12if (number1 == 3) 13 #9マスあるので9回ループさせる 14 9.times do |m| 15 print three 16 #o=1とo=0が繰り返される 17 o = m % 2 18 oX = if o == 0 then "o" else "x" end 19 print "#{oX}: Where?>>" 20 k = gets.strip 21 #入力した文字があるマス目が、oまたはxに置き換わる 22 three.gsub!(/#{k}/, oX) 23 end 24 25 print "********result********\n" 26 print three 27 print "\n**********************\n" 28end 29 30if (number1 == 4) 31 #16回ループ 32 16.times do |i| 33 print four 34 f = i % 2 35 ox = if f == 0 then "o" else "x" end 36 print "#{ox}: Where?>>" 37 k = gets.strip 38 four.gsub!(/#{k}/, ox) 39 end 40 41 print "********result********\n" 42 print four 43 print "\n**********************\n" 44end 45 46if (number1 == 5) 47 #25回ループ 48 25.times do |w| 49 print five 50 a = w % 2 51 o1 = if a == 0 then "o" else "x" end 52 print "#{o1}:Where?>>" 53 k = gets.strip 54 five.gsub!(/#{k}/, o1) 55 end 56 57 print "********result********\n" 58 print five 59 print "\n**********************\n" 60end 61 62#以下のifブロックに問題があるのでは? 63 64if (number1 == 6) 65 #36回 66 36.times do |y| 67 print six 68 x = y % 2 69 o2 = if x == 0 then "o" else "x" 70 print "#{o2}: Where?>>" 71 k = gets.strip 72 six.gsub!(/#{k}/, o2) 73 end 74 75 print "********result********\n" 76 print six 77 print "\n**********************\n" 78end 79gets
試したこと
endを追加して正常に作動しています。
もう一度最初から書き直しても直りません。
補足情報(FW/ツールのバージョンなど)
Mac OS Monterey
エディタ:Sublime Text 4
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/05 22:08