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

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

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

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

Q&A

2回答

2633閲覧

Ruby ジャンケンゲーム

tsumitaryo

総合スコア10

Ruby

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

0グッド

0クリップ

投稿2019/02/15 00:15

Rubyでジャンケンゲームを作っています。

みなさまお疲れさまです。
ジャンケンゲームについての質問になります。

・「君の手は:グー,僕の手は:パー」は問題なく出ます。
しかし、プレイヤー勝ちの場合に「"つよいね!君の勝ちだー"」が出ない状態です。

・「あいこ」の場合にもう一度「あいこで!」を出すことは成功しましたが、2回目の「あいこ」の際の勝敗結果が出なくて迷っています。

また、elseif の条件が足りてないようなのですが、何が足らないのかわからない状態です。

アドバイス頂けると嬉しいです。
よろしくお願いします!

Ruby

1コード

自分の手を出す

相手の手をランダムで出す

勝敗の判定

結果の表示

あいこなら繰り返し

puts "最初はグー、じゃんけん..."
puts "[0]グー"
puts "[1]チョキ"
puts "[2]パー"

player = gets.to_i
computer = rand(0..2)
number = (0..2)
if number ==0
puts "グー"
elsif number ==1
puts "チョキ"
else number ==2
puts "パー"

janken = ["グー","チョキ","パー"]
puts "君の手は:#{janken[player]},僕の手は:#{janken[computer]}"

#勝ち player[0]=computer[1],player[1]=computer[2],player[2]=computer[0]
#あいこ player=computer
#負け 以外
if player == computer
puts "あいこで"
puts "[0]グー"
puts "[1]チョキ"
puts "[2]パー"
player = gets.to_i
computer = rand(0..2)

elsif player == computer
puts "あいこで"
puts "[0]グー"
puts "[1]チョキ"
puts "[2]パー"
player = gets.to_i
computer = rand(0..2)

elsif (player == 0 && computer == 1)||(player == 1 && computer == 2||player == 2 && computer == 0)
player[0]=computer[1],player[1]=computer[2],player[2]=computer[0]
puts "つよいね!君の勝ちだー"

else
puts "イェーイ!君の負けだー"

end
end

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

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

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

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

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

otn

2019/02/15 00:24

プログラムを ```Ruby と ``` という行で囲ってください。
stdio

2019/02/15 00:38

単純に処理が戻ってないような雰囲気ですけど... なにかフラグを落とし忘れているとか、そんな簡単な不具合だと思います。 もう一度しっかり見直せば良いですよ。
madoka9393

2019/02/15 01:22

「Ruby じゃんけん」で(ググるは言わずもがな)teratail内を検索するだけでも、 参考になるコードがゴロゴロ見つかるので一度そちらを参考にしてみては。
tsumitaryo

2019/02/17 05:20

みなさま ご回答ありがとうございました。 もう一度確認するとともに、teratai内の情報も参考にさせて頂きます!
guest

回答2

0

色んなものに名前を与えたら、ロジックが理解しやすくなるかもしれません。Intで判断するのは分かりづらいですね。

ruby

1class Janken 2 def initialize 3 @options = { 4 0 => 'グー', 5 1 => 'チョキ', 6 2 => 'パー' 7 } 8 @win_patterns = { 9 'グー' => 'チョキ', 10 'チョキ' => 'パー', 11 'パー' => 'グー' 12 } 13 end 14 15 def start 16 instructions 17 play 18 end 19 20 def instructions 21 puts '最初はグー、じゃんけん...' 22 @options.each { |name, key| puts " - #{key} => #{name}" } 23 end 24 25 def play 26 player = @options[gets.to_i] 27 computer = @options[@options.keys.sample] 28 29 puts "あなたは#{player}" 30 puts "相手は#{computer}" 31 32 compare(player, computer) 33 end 34 35 def compare(player, computer) 36 if player == computer 37 draw 38 return play 39 end 40 41 @win_patterns[player] == computer ? win : lose 42 end 43 44 def draw 45 puts 'あいこでしょ' 46 end 47 48 def win 49 puts 'あなたの勝ちです' 50 end 51 52 def lose 53 puts 'あなたの負けです' 54 end 55end 56 57j = Janken.new 58j.start

投稿2019/02/15 01:48

Bremenkanp

総合スコア205

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

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

0

条件式をよく見てください。

ruby

1(player == 0 && computer == 1)||(player == 1 && computer == 2||player == 2 && computer == 0)

見やすくするためにスペースを開けましょう。

ruby

1(player == 0 && computer == 1) || (player == 1 && computer == 2 || player == 2 && computer == 0)

何がおかしいかわかりましたか?

投稿2019/02/15 01:21

mather

総合スコア6753

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

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

stdio

2019/02/15 02:10

ああ、カッコが足りない!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問