次のコードを研究してみてください。
ruby
1SCORE_FILE = 'score.txt'
2
3def ask_replay?
4 answer = ''
5 puts 'もう一度プレイしますか?(y/n)'
6 loop do
7 answer = gets.chomp.downcase
8 break if answer == 'n' || answer == 'y'
9 end
10 answer == 'y'
11end
12
13def game(name)
14 random = Random.new
15 a = random.rand(1..100) # 乱数作成
16
17 puts '数当てゲームです。'
18 sleep 1
19 puts '1から100までのランダムな数値をコンピュータが生成します。当ててみてください'
20 sleep 1
21 puts 'それでは予想してみてください'
22
23 count = 0 # 正解まで何回かかるかのカウント
24 loop do
25 num = gets.to_i
26 count += 1
27
28 break if num == a
29
30 if num < a
31 puts("#{num}よりも大きい数値です")
32 elsif num > a
33 puts("#{num}よりも小さい数値です")
34 end
35 end
36
37 puts("#{name}さんは#{count}回で正解しました。")
38 count
39end
40
41puts '名前を入力してください'
42name = gets.chomp!
43
44score = []
45loop do
46 score << game(name)
47 break unless ask_replay?
48end
49
50data = []
51if File.exist?(SCORE_FILE)
52 data = IO.readlines(SCORE_FILE)
53end
54
55File.open(SCORE_FILE, 'w') do |f|
56 data.each do |line|
57 f.puts(line)
58 end
59 score.each do |v|
60 f.puts("#{name}, #{v}")
61 end
62end
実行例
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/01 10:43