FEHの能力値はHP,攻撃、速さ、守備、魔防の4種類です。武器には物理攻撃と非物理攻撃がありisMaterial()などのメソッドで判別できるものとします。今回速さは使いません。なおHPは現在値と最大値の2種類を持つのが現実的です。同じオブジェクトが持つべきかはまた別問題ですが。 基本式 ダメージ=攻撃側の攻撃 - (攻撃側が物理攻撃の時は被害側の守備 | そうでないときは被害側の魔防) ダメージがマイナスの時は0とする 攻撃された側はダメージの分だけHPが減少する HPがマイナスの時は0とする 攻撃側をAttacker, 被害側をTargetとします これをシンプルにコード化して、例えばattacker.attack(target)メソッドと名付けると次のようになるでしょう data class Hero(var hp: Int, var atk: Int, var spd: Int,