じゃんけんのプログラムを作っています。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
No.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
無事希望通り動きました!早急な返信ありがとうございます!もう一つ上手く行った方法がありまして、File.delete("result.txt")を元のプログラムの最後に付け足しても出来ました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Ruby vscode 文字化け 1 2022/05/21 19:17
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- MySQL 次の時間帯の勝率の合計を求めるSQL文 1 2023/07/04 17:12
- その他(プログラミング・Web制作) 【Python初学者】以下コードについて教えていただきたいです 4 2023/04/19 13:01
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
100万件越えCSVから条件を満た...
-
ビーリアルのユーザー名を変え...
-
pythonのerrorコード
-
パソコンのスクリーンセーバー...
-
プログラミング
-
pythonエラー
-
パイソンでpy ファイルと p...
-
power BI クエリエディター 〇...
-
エクセルのマクロでの積分
-
実行時エラー450:引数の数が一...
-
(再質問)エクセルのマクロボ...
-
三項でたとえば交換って
-
バーチャルボックスが使えなく...
-
GitHubは初年度以外は有料にな...
-
WIN11にオフイスを複数入れるこ...
-
pandasでsqlite3にテーブル作成...
-
パイソンエラーについて
-
パイソンプログラミング
-
プログラミング講師はまだ需要...
-
VSコード
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ビーリアルのユーザー名を変え...
-
三項でたとえば交換って
-
(再質問)エクセルのマクロボ...
-
WinSCPで画像のように puttyを...
-
教えてください
-
パソコンのスクリーンセーバー...
-
pythonのerrorコード
-
C言語の入力した文字を反転させ...
-
pandasでsqlite3にテーブル作成...
-
pythonエラー
-
100万件越えCSVから条件を満た...
-
英数字を含む文字列(0-9,A-Z)...
-
パイソンエラーについて
-
1、Rstudioで回帰直線を求める...
-
【メモリ不足で落ちる(python)】
-
VBA
-
VBScriptでExcel(2019)上のデー...
-
VBA メモ帳の上書き保存がしたい
-
パイソンのクラスについて
-
プログラミング講師はまだ需要...
おすすめ情報