rubyでじゃんけんプログラムを作っているのですが、勝率・敗率等を出そうとしてもうまく動きません。
条件として、
・Rubyファイル、入力ファイル、出力ファイルの3つを用意
・入力ファイルには任意の数字を1文字づつ改行して記入
・出力ファイルには勝ち、負け、あいこを1行づつ記入
・じゃんけんのメソッドと勝敗の判定メソッドは別
というものです。
学びたてのため拙いプログラムですが、ぜひ解決策をご教示いただけると幸いです。
def judge(input,number,file,count,win,lose,draw)
if input == number
file.puts("#{count}回戦目はあいこです")
draw += 1
elsif (input == 0 && number == 1) || (input == 1 && number ==2) || (input == 2 && number == 0)
file.puts("#{count}回戦目はあなたの勝ちです")
win += 1
else
file.puts("#{count}回戦目はあなたの負けです")
lose += 1
end
end
def janken()
in_filename = ARGV[0] #入力ファイル
out_filename = ARGV[1] #出力ファイル
count = 1
win,lose,draw,probability = 0,0,0,0
in_file = open(in_filename)
out_file = open(out_filename,"w")
while number = in_file.gets()
puts "\n#{count}回戦目\n[0]:グー\n[1]:チョキ\n[2]:パー"
input = STDIN.gets #じゃんけんの手を入力
if input.to_i == 0 || input.to_i == 1 || input.to_i == 2
judge(input.to_i , number.to_i , out_file,count , win , lose , draw)
else
puts "入力ミスにより不戦敗です"
out_file.puts("#{count}回戦目はあなたの負けです")
end
count += 1
end
puts "\n勝率、敗率、引き分け率のどれが知りたいですか?\n[0]勝率\n[1]敗率\n[2]引き分け率\n[3]別にいい\n"
number = STDIN.gets
if number.to_i == 0
probability = win / count * 100
elsif number.to_i == 1
probability = lose / count * 100
elsif number.to_i == 2
probability = draw / count * 100
else
exit
end
puts "#{probability}%です"
in_file.close
out_file.close
end
janken()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。