Pythonで関数を作ろう②

ゲームに関するプログラムを作ってみましょう。

問題1:回復をする関数

次のプログラムの空欄①と②を埋めて、キャラクターのHPを回復して、回復後のHPを戻り値として返す関数 heal() を完成させてください。

回復とは、HPの値が一定の値、加算されることを言います。


引数の説明

hp : キャラクターの現在HP

maxhp : キャラクターの最大HP(どれだけ回復しても、これより大きい値にはならない数値です。)

amount : 回復する値


プログラム

# HPを回復する関数を作ろう
def heal(hp, maxhp, amount):
    new_hp = hp + ①
    if ② :
        new_hp = maxhp
    return new_hp

# 回復の処理
maxhp = 100  # 最大HPが100
hp = 30  # 現在のHPが30

hp = heal(hp,maxhp,40) # HPを40回復
print("HP =",hp) # 70

hp = heal(hp,maxhp,40) # HPを40回復
print("HP =",hp) # 100

実行結果

70
100

最終的にnew_hpを戻り値として返しているね。

HPに、回復する値(amount)を加算した結果をnew_hpに代入するのかな。

でも、maxhpの値は超えちゃダメだから、足した結果がmaxhpを超えてしまった時の処理を考える必要がありますね。

②にその条件が入るのかもね。

①

②

問題2:攻撃のダメージを計算する関数

次のプログラムの空欄③と④を埋めて、攻撃の時のダメージの値を返す関数 damage() を完成させてください。

ダメージは、攻撃者の攻撃力 - 被攻撃者の防御力 + (-5〜5のランダム値)とします。

ただし、計算結果が負の値になった場合のダメージの値は0とします。


引数の説明

att : 攻撃者の攻撃力

deff : 被攻撃者の防御力


プログラム

# ダメージ計算をする関数を作ろう
import random
def damage(att,deff):
    d = random.randint(-5,5) # -5〜5の値をランダムで算出
    final_damage = ③
    if ④ :
        final_damage = 0
    return final_damage

# ダメージの計算結果の表示
print(damage(50,20)) # 25~35
print(damage(40,40)) # 0~5


実行結果

28
0

※上記実行結果は一例です。ランダムで値は変化します。

ダメージ計算式に従って、計算しよう。

0よりも小さくなることがあるから気をつけないとね。

③

④

※この再現版では提出は行いません(送信先は未接続です)

Well done!

次のステップに進みましょう!

次のステップに進む

← 前のステップにもどる