変数に入れると
HP = 130
damage = 10
となりますね。
攻撃回数はHPが0になるまでなので、HPをダメージで割り切れる場合
HP / damage が攻撃回数です
次にHPをダメージで割り切れない場合を考えます。
damage = 9 のとき、
HP / damage は 14あまり6 となり、もう一回攻撃しなければなりません。
したがってdamage = 9 のときの攻撃回数は
(HP / damage +1) となります。
ループ基本形 if文
これをif文で書くと
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
damage = 9 | |
HP = 130 | |
if HP % damage == 0: | |
print (int(HP/damage)) | |
else: | |
print (int(HP/damage)+1) |
これは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文はゴール地点の値が決まっていて、ループ回数が決まっていないときに使いやすそうです
In [1]: 15
と表示されます。
--------------------------
それでは次にif文ではなく while文で記述してみます
ループ基本形 while文
臨場感を出して出力される文字も入れてみました。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
damage = 9 | |
HP = 130 | |
while HP > 0: | |
print ("りゅうおうに " + str(damage) + " のダメージ") | |
HP -= damage | |
print ("りゅうおう を たおした") |
出力結果は
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおう を たおした
となりました。
while文中でダメージの値をランダムにする
while文の場合はループの回数が決まっていないので、damageがランダムでブレたとしても攻撃回数を出力することができます
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
import random | |
HP = 130 | |
count = 0 | |
while HP > 0: | |
damage = random.randint(8,10) | |
print ("りゅうおうに " + str(damage) + " のダメージ") | |
HP -= damage | |
count += 1 | |
print ("りゅうおう を" + str(count) + "かい こうげきして たおした") |
結果
りゅうおうに 8 のダメージ
りゅうおうに 10 のダメージ
りゅうおうに 10 のダメージ
りゅうおうに 8 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 10 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 10 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 10 のダメージ
りゅうおうに 10 のダメージ
りゅうおうに 9 のダメージ
りゅうおうに 10 のダメージ
りゅうおう を14かい こうげきして たおした
この例では1回のダメージを8から10としてランダム値を生成して攻撃しています。
ランダムなので実行するたびに竜王を倒すまでの攻撃回数は変化します
while文中で会心の一撃やミスを入れる
ここまできたら攻撃するだけでなく、会心の一撃やミスも入れてみましょう
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
import random | |
HP = 130 | |
count = 0 | |
while HP > 0: | |
lucky = random.randint(1,10) | |
print("ゆうしゃ のこうげき") | |
if lucky >= 9: | |
damage = random.randint(16,20) | |
print ("かいしんの いちげき!") | |
print (" りゅうおうに " + str(damage) + " のダメージ") | |
elif lucky >= 2: | |
damage = random.randint(8,10) | |
print (" りゅうおうに " + str(damage) + " のダメージ") | |
else: | |
damage = 0 | |
print ("ミス") | |
HP -= damage | |
count += 1 | |
print ("りゅうおう を" + str(count) + "かい こうどうして たおした") |
結果
ゆうしゃ のこうげき
りゅうおうに 10 のダメージ
ゆうしゃ のこうげき
かいしんの いちげき!
りゅうおうに 16 のダメージ
ゆうしゃ のこうげき
かいしんの いちげき!
りゅうおうに 17 のダメージ
ゆうしゃ のこうげき
りゅうおうに 9 のダメージ
ゆうしゃ のこうげき
りゅうおうに 10 のダメージ
ゆうしゃ のこうげき
りゅうおうに 9 のダメージ
ゆうしゃ のこうげき
ミス
ゆうしゃ のこうげき
りゅうおうに 10 のダメージ
ゆうしゃ のこうげき
かいしんの いちげき!
りゅうおうに 17 のダメージ
ゆうしゃ のこうげき
りゅうおうに 10 のダメージ
ゆうしゃ のこうげき
かいしんの いちげき!
りゅうおうに 18 のダメージ
ゆうしゃ のこうげき
りゅうおうに 9 のダメージ
りゅうおう を12かい こうどうして たおした
うんのよさに応じて会心の一撃やミスの確率も変動させられますね
こんな感じでwhile文はゴール地点の値が決まっていて、ループ回数が決まっていないときに使いやすそうです
0 件のコメント:
コメントを投稿