1

だから私は自分の個人的な楽しみのために戦闘システムを作成していて、その回復部分に取り組もうとしています. ヒーリングアイテムを使用すると、値が現在の最大ヘルスを超えると、ヒーリング効果の値が何であれ、最大ヘルスが増加します。

調べてみると、飽和演算を提案する人もいましたが、Googleでそのプロセスを説明するものは見つかりませんでした。次に、同じ問題を説明し、回答があったスタックに関する別のトピックを見つけましたが、試してみるとうまくいきません。簡単に言えば。

これが私が現在取り組んでいるコードのブロックです。

public void useHealItem2(CharStats hero, Enemy enemy, Battle battle){
    Math.min(hero.hp += 500, hero.hp);
    battle.herodmg = enemy.att - hero.def;
    hero.hp -= battle.herodmg;
}

そのため、最大値を固定数ではなく可変量に設定しようとしています。したがって、ヒーローの HP が増加すると、これは自動的にスケーリングされます。最初に HP を設定しているため、最大値がすでに 500 に設定されているため、これには問題があると思います。それが理にかなっている場合。しかし、それは私が考えていることであり、実際にはよくわかりません。

4

2 に答える 2

3

hero.hp = Math.min(hero.currentHealth+500, hero.maxHealth)、 どこcurrentHealthmaxHealthはまさにそのように聞こえると言うのをお勧めします。

于 2014-01-23T19:59:07.397 に答える
1

@Stendikaが答えたように、使用Math.min(hero.hp + 500, hero.maxHealth)することが解決策であり、両方の最小値を取り、要求どおりhero.hp + 500 > hero.maxHealthになる場合。(そのヒーローの最大ヘルスを格納する変数を作成しました。これは、提案された方法で計算したい場合に必須です)hero.maxHealth
hero.maxHealth

ただし、現在何が起こっているのかを理解し、次のことを説明することも非常に重要です。

  • あなたが使用しているMath.min(hero.hp += 500, hero.hp)
  • 上記のステートメントの戻り値を変数に割り当てないため、何もしないように見えます。
  • hero.hp += 500まだ評価されて実行されますが、何をするかは に追加500されるためhero.hphero.hp変更されました。
  • このため、計算を「バイパス」し、単純500に に追加したかのように動作するように見えますhero.hp
于 2014-01-23T20:07:35.300 に答える