0

プレイヤーのHP、最大HP、および回復量を取得して新しいHPを返す関数を作成しようとしていますが、最大HPよりも高い新しいHPを返しません。どこかで計算を間違えたに違いないが、どこか分からない。私の最初の試み:

def heal(hp,max_hp,heal):
    if hp > heal:
        return (max_hp + heal)
    else:
        overflow = heal-max_hp
        new_hp = hp - overflow
        return (new_hp)

hp = heal(10,30,20)
print hp            #prints 20, should print 30
hp = heal(10,30,10)
print hp            #prints 30, should print 20
hp = heal(10,20,30)
print hp            #prints 0, should print 20.

私の2回目の試み:

    def heal(hp,max_hp,heal):
    if hp > heal:
        return (max_hp + heal)
    else:
        overflow = max_hp - heal
        new_hp = hp - overflow
        return (new_hp)

hp = heal(10,30,20)
print hp            #prints 0, should print 30
hp = heal(10,30,10)
print hp            #prints -10, should print 20
hp = heal(10,20,30)
print hp            #prints 20, should print 20.
4

4 に答える 4

4

回復したヒット ポイントを現在のヒット ポイントに加算し、その値と最大ヒット ポイントの小さい方を返すだけです。

def heal(hp, max_hp, healed):
    return min(hp + healed, max_hp)
于 2013-09-10T08:16:53.823 に答える
2

これでうまくいくはずです。とにかく回復値を追加し、それを超えた場合はヒットポイントを最大値に戻します:

def heal (hp, max_hp, heal):
    hp = hp + heal
    if hp > max_hp:
        hp = max_hp
    return hp

価値があるのは、次のものが含まれているという理由だけで、両方のソリューションに欠陥があることです。

return (max_hp + heal)

より大きい値を返す状況があってはなりませんmax_hpifそれは、必要がないため詳細に分析していない奇妙な条件は別として、上記で提供したコードを使用するだけです。

于 2013-09-10T08:15:09.687 に答える
0

このコードはうまくいくかもしれません:

def heal(hp,max_hp,heal):
    if hp + heal > max_hp:
        return (max_hp)
    else:
        return (hp + heal)

新しい hp = 現在の hp + 回復ですが、最大 hp を超えることはできないため、現在の hp + 回復を最大 hp と比較し、現在の hp と回復の合計 hp、または最大 hp より大きい場合は最大 hp を返します。

于 2013-09-10T08:22:56.763 に答える
0

最初に HP にヒールを追加し、それが max_hp を超える場合は max_hp を返します。

def heal(hp,max_hp,heal):
    hp = hp + heal
    if hp > max_hp:
        return max_hp
    else:
        return hp
于 2013-09-10T08:17:15.817 に答える