質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

717閲覧

endの数が一致しない/最初に結果が出てくる

Sakurabota_Moch

総合スコア9

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2021/12/05 13:55

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

o2 = if x == 0 then "o" else "x"
この行に end がないですね

投稿2021/12/05 14:01

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sakurabota_Moch

2021/12/05 22:08

大変愚かな質問をしてしまいました。 何度も書いたのに見落としていました… ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問