ボウリングのすすめ

ボウリングの面白さや上達のコツなど紹介

ボウリングのスコア計算のプログラム化

ボウリングのスコア分析のプログラムを作っているのだけど、スコア表を入力することが結構、面倒なので、かなり簡略化している。そのため、詳細な分析ができないのだけど、改良しようか少し考えている。そんな話を書いてみたい。

簡略化した分析

現在のスコア分析の入力は、1ゲームごとに、以下のようにしている。

[210,5,3,"nomiss"]

スコア、合計のストライク数、連続の最高ストライク数、ノーミスだったかどうか。4個だけ入力しているので、スコア表を見ながら、一日のゲーム数を全部登録しても、1分もかからず、入力できる。

これをデータベースに登録して、SQLで必要な条件で抜き出して、月間のスコアグラフを書いたり、ストライク率を計算していたりする。

簡略した分析の限界

まず、スペア率を計算できない。スペアが何個あったかも入力していないためである。また、スプリットがどの程度、出ているかもわからない。10ピンのスペア率もわからない。

最近の自分の目標としては、スペア率を大事にしたいと思っているのだけど、現状だとノーミス率で、なんとなくわかるという状態だったり、最終ゲーム日はスコア表が、ラウンドワンのホームページで確認できるので、その数値をみるしかない状態になっている。

スコア表の入力と計算は結構大変

スコア表を入力しようとすると、1ゲームだと、以下のようになる。

[[9,1],[8,2],[10],[9,1],[10],[10],[9,1],[6,3],[10],[9,1,9]]

なかなか、入力が大変になる。そして、このスコア表から、スコアを計算するのも割と難しい。

ボウリングのスコア計算のロジックとしては、スペアだったら次の1投目を加算する。ストライクだったら、次の1投目と、2投目を加算する。

そして、10フレームだけは、3投の点の合計を計算して終わりとなる。

プログラム化できるといえばできるが、ちょっとめんどくさい。

ノーミスかどうかの判定もちょっとめんどくさい。

10フレーム以外は、2投分の点の合計が10であれば、スペアになるが、10フレームは、1投目にストライクかどうかでスペア判定する部分がかわる。

[10,9,1]

であれば、後半の2投が10点になっていれば、ノーミス。

[9,1,6]

だと、前半の2投が10点になっていれば、ノーミスになる。

[10,8,1]は、ミス扱いになる。

スコア表を入力したら必要な分析ができるのか?

単純にスコア表だけを入れても、スプリット率や、10ピンカバー率はわからない。ボウリング場で表示されているスコアだと、スプリットは丸印がついているので、それを区別する項目の追加が必要になる。

例えば、1フレームだけを例にすると、以下のようにする必要がある。

[8,1,"s",,] <--8本のスプリットで1本だけとれた場合を表すために(s)plitを入力。

[9,1,,10]<--9本カウントで10ピンが残ったことを示すために10を最後に入力。

こんなスコア表を、毎回、入力すれば、必要な分析ができそうであるが、毎回、入力することがかなり面倒なので、どうしたもんかと思っている。

プログラム化は、そんなに難しくはないけど、例外的な計算を10フレームだけ行うようにロジックを作るのも少し面倒である。

まとめ

ボウリングのスコア計算のプログラムは、検索するといろいろ出てくる。なので自分でプログラムしないでもすぐに準備はできる。

[[9,1],[8,2],[10],[9,1],[10],[10],[9,1],[6,3],[10],[9,1,9]]

そんなプログラムを使って、このスコア表の合計スコアを計算すると、191になる。

以下のような表現の方が人にはわかりやすいかもしれない。

[9,"/"],[8,"/"],["X"],[9,"/"],["X"],["X"],[9,"/"],[6,3],["X"],[9,"/",9]]

スコア分析も凝り出すと、入力が大変になってしまうので、難しいなと思っている。スコア表を印刷したものをスキャンして取り込めるようにしてしまう案であれば、楽ちんなので、やるとしたらその方法がいいなと思っている。

また、ボウリング場がスコア表をデータとして提供してくれると嬉しいなと思う。

需要がなさそうなので、なかなか実現しそうもないけど・・・