🛡 HPが0未満にならないようにしよう
今の TakeDamage メソッドはこうでした。
public void TakeDamage(int damage)
{
Hp = Hp - damage;
Console.WriteLine($"{Name} は {damage} のダメージを受けた!");
}
しかし、このままだと問題があります。
❗ 問題点
もし HP が 20 のときに
player.TakeDamage(50);
を実行すると、
HPは -30 になってしまいます。
ゲームとして不自然ですね。
🔧 改良してみよう
HPが0未満にならないように修正します。
public void TakeDamage(int damage)
{
Hp = Hp - damage;
if (Hp < 0)
{
Hp = 0;
}
Console.WriteLine($"{Name} は {damage} のダメージを受けた!");
}
🧠 ここで使っている知識
if (Hp < 0)
これは条件分岐です。
つまり:
HPが0より小さくなったら、0に戻す
という処理です。
▶ 実行してみる
Player player = new Player
{
Name = "勇者",
Hp = 20,
Attack = 20
};
player.ShowStatus();
Console.WriteLine();
player.TakeDamage(50);
Console.WriteLine();
player.ShowStatus();
▶ 実行結果
名前: 勇者
HP: 20
攻撃力: 20
勇者 は 50 のダメージを受けた!
名前: 勇者
HP: 0
攻撃力: 20
HPは0で止まりました。
🎯 重要な学習ポイント
ここで学べるのは:
- オブジェクトは状態を持つ
- その状態はメソッドで変わる
- 条件分岐で状態を守れる
つまり、
クラスの中に「ルール」を書ける
ということです。
🔥 一段レベルが上がった
最初は:
- データの箱
次は:
- データ+動き
今は:
- データ+動き+ルール
になりました。
オブジェクト指向らしさが、かなり出てきています。
訪問数 2 回, 今日の訪問数 2回








ディスカッション
コメント一覧
まだ、コメントがありません