2017年2月22日水曜日

りゅうおうを倒すまでの攻撃回数【Python】if文,while文

竜王のHPを130として、1回攻撃すると10のダメージを与えられるとします。

変数に入れると

HP = 130
damage = 10

となりますね。

攻撃回数はHPが0になるまでなので、HPをダメージで割り切れる場合

HP / damage が攻撃回数です



次にHPをダメージで割り切れない場合を考えます。

damage = 9 のとき、
HP / damage は 14あまり6 となり、もう一回攻撃しなければなりません。

したがってdamage = 9 のときの攻撃回数は
(HP / damage +1) となります。


ループ基本形 if文
これをif文で書くと


これはdamage = 9と固定しているので、攻撃回数は

In [1]: 15

と表示されます。


--------------------------
それでは次にif文ではなく while文で記述してみます

ループ基本形 while文

臨場感を出して出力される文字も入れてみました。



出力結果は
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおう を たおした

となりました。



while文中でダメージの値をランダムにする

while文の場合はループの回数が決まっていないので、damageがランダムでブレたとしても攻撃回数を出力することができます



結果
りゅうおうに 8 のダメージ
りゅうおうに 10 のダメージ
りゅうおうに 10 のダメージ
りゅうおうに 8 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 10 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 10 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 10 のダメージ
りゅうおうに 10 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 10 のダメージ
りゅうおう を14かい こうげきして たおした

この例では1回のダメージを8から10としてランダム値を生成して攻撃しています。

ランダムなので実行するたびに竜王を倒すまでの攻撃回数は変化します



while文中で会心の一撃やミスを入れる

ここまできたら攻撃するだけでなく、会心の一撃やミスも入れてみましょう



結果
ゆうしゃ のこうげき
  りゅうおうに 10 のダメージ
ゆうしゃ のこうげき
かいしんの いちげき!
  りゅうおうに 16 のダメージ
ゆうしゃ のこうげき
かいしんの いちげき!
  りゅうおうに 17 のダメージ
ゆうしゃ のこうげき
  りゅうおうに 9 のダメージ
ゆうしゃ のこうげき
  りゅうおうに 10 のダメージ
ゆうしゃ のこうげき
  りゅうおうに 9 のダメージ
ゆうしゃ のこうげき
ミス
ゆうしゃ のこうげき
  りゅうおうに 10 のダメージ
ゆうしゃ のこうげき
かいしんの いちげき!
  りゅうおうに 17 のダメージ
ゆうしゃ のこうげき
  りゅうおうに 10 のダメージ
ゆうしゃ のこうげき
かいしんの いちげき!
  りゅうおうに 18 のダメージ
ゆうしゃ のこうげき
  りゅうおうに 9 のダメージ
りゅうおう を12かい こうどうして たおした



うんのよさに応じて会心の一撃やミスの確率も変動させられますね

こんな感じでwhile文はゴール地点の値が決まっていて、ループ回数が決まっていないときに使いやすそうです

0 件のコメント:

コメントを投稿