アプリ版:「スタンプのみでお礼する」機能のリリースについて

じゃんけんのプログラムを作っています。3回勝負(2回勝った方の勝者/2回負けた方の敗者)というルールです。
勝ち2ポイント、負け1ポイント、あいこ0ポイントとしました。外部のresult.txtファイル内に結果を毎回追加記録していき、3回の合計が5ポイント以上は勝者、4ポイント以下は敗者としました。
3 win : 0 lose ... 6 point
2 win : 1 lose ... 5 point
1 win : 2 lose ... 4 point
0 win : 3 lose ... 3 point
しかし2回目以降の実行でもファイル内に1回目の値が残ってしまい、それを再び初めから合計していくので2回目以降の正しい値が出ません。どうすればいいか教えていただきたいです。宜しくお願いします。
ーーーーーーーーーーーーーーーーーーーーーーーーーー
puts "*半角で該当の数字を入力してね*\n"
puts "0:グー 1:チョキ 2:パー\n3回勝負だよ!"

$jankens = ["グー", "チョキ","パー"]
$judge = {0=>"あいこで",1 =>"あなたの負けです。",2 =>"あなたの勝ちです。"}

def janken(p)
com=rand(3)
result=(p-com+3)%3
return result,"あなたの手:#{$jankens[p]},相手の手:#{$jankens[com]}\n"+$judge[result]
end

def main()
counter = 3
puts "\n何を出す?最初はグーじゃんけん..."
while counter !=0
puts "\n"
a,b = janken(gets.to_i)
puts(b)
open("result.txt","a") do |f|
f.puts(a)
end
break if counter == 0
if a !=0
counter -= 1
end
end
end

if __FILE__ == $0
main
end

sum=0
open("result.txt","r") do |t|
while line = t.gets
if /(\d+)/=~line
sum += $1.to_i
end
end
end

if sum>4
puts "\nYou are the winner!"
else
puts "\nYou are the loser!"
end

「じゃんけんのプログラムを作っています。3」の質問画像

A 回答 (1件)

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


result.txtの読み込みをなくしました。
mainの中で、sumをカウントし、それを返すようにしました。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
puts "*半角で該当の数字を入力してね*\n"
puts "0:グー 1:チョキ 2:パー\n3回勝負だよ!"

$jankens = ["グー", "チョキ","パー"]
$judge = {0=>"あいこで",1 =>"あなたの負けです。",2 =>"あなたの勝ちです。"}

def janken(p)
com=rand(3)
result=(p-com+3)%3
return result,"あなたの手:#{$jankens[p]},相手の手:#{$jankens[com]}\n"+$judge[result]
end

def main()
win = 0
counter = 3
puts "\n何を出す?最初はグーじゃんけん..."
while counter !=0
puts "\n"
a,b = janken(gets.to_i)
win += a
puts(b)
open("result.txt","a") do |f|
f.puts(a)
end
break if counter == 0
if a !=0
counter -= 1
end
end
return win
end

if __FILE__ == $0
sum = main()
end


if sum>4
puts "\nYou are the winner!"
else
puts "\nYou are the loser!"
end
    • good
    • 0
この回答へのお礼

助かりました

無事希望通り動きました!早急な返信ありがとうございます!もう一つ上手く行った方法がありまして、File.delete("result.txt")を元のプログラムの最後に付け足しても出来ました。

お礼日時:2020/12/19 00:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!