ストライク2回目の計算の途中
This commit is contained in:
parent
1f0af286fc
commit
758de7a95e
1 changed files with 13 additions and 15 deletions
28
bowling.rb
28
bowling.rb
|
@ -18,22 +18,20 @@ shots.each_slice(2) do |s|
|
||||||
end
|
end
|
||||||
|
|
||||||
point = 0
|
point = 0
|
||||||
spare = false
|
|
||||||
strike1 = false
|
|
||||||
strike2 = false
|
|
||||||
|
|
||||||
frames.each do |frame|
|
frames.each_with_index do |frame, index|
|
||||||
if frame[0] == 10
|
point += frame.sum
|
||||||
point += 30
|
if frame == [10, 0] && frames[index + 1].first == 10 #ストライクかつ次もストライクの場合
|
||||||
elsif frame.sum == 10
|
point += frames[index + 2].first
|
||||||
point += frame[0] + 10
|
|
||||||
else
|
|
||||||
point += frame.sum
|
|
||||||
end
|
end
|
||||||
|
if frame == [10, 0] && frames[index + 1].first != 10 #ストライク1回のみの場合
|
||||||
|
point += frames[index + 1].sum #次のフレームの合計値が得点となる
|
||||||
|
end
|
||||||
|
if frame.sum == 10 # スペアの場合
|
||||||
|
point += frames[index + 1].first #次のフレームの一投目が得点となる
|
||||||
|
end
|
||||||
|
puts "#{index + 1}フレーム目の得点: #{point}"
|
||||||
end
|
end
|
||||||
puts point
|
|
||||||
|
|
||||||
|
#ストライクは次の「2投の合計値」が得点となる!!!
|
||||||
# 上記のコードを以下の旧式ルールに適合させる。
|
#つまりストライクを仮に1フレーム目で取り、2フレーム目もストライクだった場合、1フレーム目の得点には3フレーム目の初回分までが加算される!!!!
|
||||||
# 10フレーム目だけ3投ある場合がある。
|
|
||||||
# スペアとストライクの場合は現在のフレームだけでは計算ができない。(次の投球、次の次の投球の情報が必要)
|
|
||||||
|
|
Loading…
Reference in a new issue