teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

コード追記。

2018/04/12 02:00

投稿

fuzzball
fuzzball

スコア16733

answer CHANGED
@@ -1,4 +1,25 @@
1
1
  * 1フレのストライクが検知されない。
2
2
  * 前フレ2投目ミス、次フレ1投目ストライク → スペア判定される。
3
3
  * 前フレ2投目+次フレ1投目=10 → スペア判定される。
4
- * 10フレでスペア/ストライク加算されてしまう。
4
+ * 10フレでスペア/ストライク加算されてしまう。
5
+
6
+ 【追記】
7
+
8
+ スコア加算はフレーム単位でやった方がシンプルな気がします。
9
+ ベタ書きすると、
10
+
11
+ ```python
12
+ if a[n] == 10:
13
+ #strike
14
+ score += a[n] + a[n+1] + a[n+2]
15
+ n += 1
16
+ elif a[n] + a[n+1] == 10:
17
+ #spare
18
+ score += a[n] + a[n+1] + a[n+2]
19
+ n += 2
20
+ else:
21
+ score += a[n] + a[n+1]
22
+ n += 2
23
+ ```
24
+
25
+ こうやって見ると、加算に関してはストライクもスペアも同じ式なのが面白いですね。