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

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

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

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

Q&A

解決済

2回答

404閲覧

breakする時に条件を付けたい

diego

総合スコア4

Ruby

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

0グッド

0クリップ

投稿2022/08/16 19:35

実現したいこと

 あっち向いてホイ終了後あいこの場合ジャンケンに戻りその他の場合終了させたいのですが、あいこの場合も終了してしまいます。
あいこを終了させないようにするためにはどうすればよろしいでしょうか?

該当のソースコード

Ruby

1ソースコード 2```puts "あっち向いてホイを始めます" 3puts "ジャンケン・・・" 4class JankenAcchimuite 5 def initialize (draw ="あいこ",lose ="負け",win ="勝ち") 6 @draw = draw 7 @lose = lose 8 @win = win 9 end 10 11 def janken 12 #実装する 13 puts "[0]グー,[1]チョキ,[2]パー" 14 player_hand = gets.to_i 15 program_hand = rand(3) 16 17 jankens = ["グー","チョキ","パー"] 18 puts "あなたの手:#{jankens[player_hand]},相手の手:#{jankens[program_hand]}" 19 20 if player_hand == program_hand 21 puts "#{@draw}" 22 return true 23 elsif (player_hand == 0 && program_hand == 2 ) ||( player_hand == 1 && program_hand == 0 )||( player_hand == 2 && program_hand == 1) 24 puts "#{@lose}" 25 return false 26 elsif (player_hand == 0 && program_hand == 1 ) ||( player_hand == 1 && program_hand == 2 )||( player_hand == 2 && program_hand == 0) 27 puts "#{@win}" 28 return false 29 end 30 end 31 32 def acchimuite_hoi 33 puts "0(上)1(下)2(左)3(右)" 34 player_direction = gets.to_i 35 program_direction = rand(4) 36 directions = ["上","下","左","右"] 37 puts "あなた:#{directions[player_direction]} 相手:#{directions[program_direction]}" 38 39 if player_direction == program_direction 40 if @win 41 puts "#{@lose}" 42 elsif @lose 43 puts "#{@win}" 44 end 45 end 46 if player_direction != program_direction 47 puts "#{@draw}" 48 end 49 end 50 51 52 while 53 result1 = JankenAcchimuite.new("あいこ","あっち向いて","あっち向いて") 54 next_game = true 55 while next_game 56 next_game = result1.janken 57 end 58 result2 = JankenAcchimuite.new("もう一度ジャンケンを行います","負けました","勝ちました") 59 puts result2.acchimuite_hoi 60 JankenAcchimuite.new("") 61 break @lose,@win 62 end 63end 64 65

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

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

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

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

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

y_waiwai

2022/08/16 23:03

そのbreakするときってのは提示のコードのどこを指していってますか
guest

回答2

0

ベストアンサー

以下のようにしてください。

ruby

1puts "あっち向いてホイを始めます" 2puts "ジャンケン・・・" 3class JankenAcchimuite 4 def initialize (draw ="あいこ",lose ="負け",win ="勝ち") 5 @draw = draw 6 @lose = lose 7 @win = win 8 end 9 10 def janken 11 #実装する 12 puts "[0]グー,[1]チョキ,[2]パー" 13 player_hand = gets.to_i 14 program_hand = rand(3) 15 16 jankens = ["グー","チョキ","パー"] 17 puts "あなたの手:#{jankens[player_hand]},相手の手:#{jankens[program_hand]}" 18 19 if player_hand == program_hand 20 puts "#{@draw}" 21 return true 22 elsif (player_hand == 0 && program_hand == 2 ) ||( player_hand == 1 && program_hand == 0 )||( player_hand == 2 && program_hand == 1) 23 puts "#{@lose}" 24 return false 25 elsif (player_hand == 0 && program_hand == 1 ) ||( player_hand == 1 && program_hand == 2 )||( player_hand == 2 && program_hand == 0) 26 puts "#{@win}" 27 return false 28 end 29 end 30 31 def acchimuite_hoi 32 puts "0(上)1(下)2(左)3(右)" 33 player_direction = gets.to_i 34 program_direction = rand(4) 35 directions = ["上","下","左","右"] 36 puts "あなた:#{directions[player_direction]} 相手:#{directions[program_direction]}" 37 38 if player_direction == program_direction 39 if @win 40 puts "#{@lose}" 41 elsif @lose 42 puts "#{@win}" 43 end 44 return false #追加 45 end 46 if player_direction != program_direction 47 puts "#{@draw}" 48 end 49 return true #追加 50 end 51 52 53 while 54 result1 = JankenAcchimuite.new("あいこ","あっち向いて","あっち向いて") 55 next_game = true 56 while next_game 57 next_game = result1.janken 58 end 59 result2 = JankenAcchimuite.new("もう一度ジャンケンを行います","負けました","勝ちました") 60 #修正開始 61 if result2.acchimuite_hoi == false 62 break 63 end 64 #修正終了 65 end 66end 67 68

投稿2022/08/17 07:06

tatsu99

総合スコア5438

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

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

0

全体の流れをきちんと読んでいないですが
「あいこ の場合は break @lose,@win を行わない」、ということでしたら
break @lose,@win unless あいこ
ですね。
あいこ のところは あいこ の場合に成り立つ条件を書いてください。

ただそれで おのぞみの動きになるか、は プログラムの流れを読めないのでわかりません

投稿2022/08/17 00:59

winterboum

総合スコア23347

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問