python(コンソールでダーツ!ゼロワン)

スポンサーリンク
python

こんにちは!
はるさらと申します。

今回はPythonの練習がてら
ダーツの問題を作成してみました。

ゼロワンというルールがあるのですが
そちらの計算をコンソール上で実施していきます♪

 

開発環境

PyCharm を使用しております。
コピペしていただければ
同じ挙動が出来るように作成しております。

他のPythonの記事はこちらから参照できます♪

 

ゼロワンの仕様(問題)

ダーツのゼロワンのシステムを作成せよ。

【ルール】
・持ち点の301点を減らしていき、丁度0点になるまで投げ続ける。

・1ターンで3回投げることが出来る。
(1回投げた時の最大得点は60点とする。)

・0点を下回ってしまった場合は、ターン開始時の得点に戻る。

・数値以外の入力や3回投げなかった場合。
一回の得点が60点を超えている場合には
適切なエラーメッセージを記載し、
処理を終わらせないこと。

【コンソール例】
「0~60の中で3回数値を入力して下さい。」
23 23 22
「残り233点」

・・・(一部省略)

「残り21点」
9 9 8
「burst!!」
「残り21点」
9 9 3
「クリア!!」

 

今回の目標

実行することで、コンソールに数値の入力が出来るようになります。
数値を入れていくことで
保有点数からどんどん減算させていきます。

保有点数が0点になったら
「クリア!!」と表示させるところまで
実装していきたいと思います。

細かい仕様は、また次回に実装予定です。

 

コーディング

count = 301

while count >= 0:
try:

print("「0~60の中で3回数値を入力して下さい。」")
a, b, c = (int(x) for x in input().split())
count = count - (a + b + c)

# クリアチェック
if count == 0:
print('「クリア!!」')
break

except ValueError:
print("「数値を3回分入力して下さい」")
finally:
print('「残り' + str(count) + '点」')

※すみません、インデントの修正は後日行います。

 

処理の解説

【1行目】
countという変数に301の数値を格納しています。
こちらをゼロワンのルールに基づいて減らしていく形になります。

【3行目】
countが0点以上の間は、処理をループさせます。

【6~8行目】
下記の構文を記載することで
コンソール上で数値の入力を求めることが出来ます。

 a, b, c = (int(x) for x in input().split()) 

変数の数だけ、入力を受け付けることが可能になります。
今回は1ターンに3回投げますので
a,b,cに入力した値をそれぞれ格納するように
記載しております。

その後、count変数から、
入力した値を減らす処理を記載しています。

この手順を、countが0点になるまで
ぐるぐるとループしていく動きとなります。

【11~13行目】
こちらの判定により、
countが0点になったら
「クリア!!」
の表示をした後、ループから抜け出しています。

【15行目】
6行目の

a, b, c = (int(x) for x in input().split())

を実行した際に、文字列をint型に変換しようとすると
例外が発生しますので

もし、入力された値が数値でなかった場合は
15行目でエラーに引っかかるようにしています。

【17行目】
残りの点数が分からないと、
ダーツで何点を狙ってよいのか分からなくなるため
finallyで、後何点で終了かを知らせています。

finallyに記載することで、エラーが出ても
しっかりと残り点数を知らせるように作成しています。

 

今日はここまで

一旦、クリアまでは表示できるようにはなりましたが
課題はまだたくさん残っています。

・1回投げた時の最大得点は60点とする。
・0点を下回ってしまった場合は、
ターン開始時の得点に戻る。(バースト)

などなど。
次回、実装を進めて行きたいと思います。

それではまたー!!