⚔ Playerに「ダメージを受ける」能力を追加しよう

キャラクターは表示するだけではありません。

ゲームでは、

  • 攻撃を受ける
  • HPが減る

という動きがありますよね。

これをメソッドで表現してみましょう。


🛠 TakeDamageメソッドを追加する

class Player
{
    public string Name;
    public int Hp;
    public int Attack;

    public void ShowStatus()
    {
        Console.WriteLine($"名前: {Name}");
        Console.WriteLine($"HP: {Hp}");
        Console.WriteLine($"攻撃力: {Attack}");
    }

    public void TakeDamage(int damage)
    {
        Hp = Hp - damage;
        Console.WriteLine($"{Name} は {damage} のダメージを受けた!");
    }
}

🔍 ここで何が起きている?

① 引数を受け取っている

public void TakeDamage(int damage)

この damage が、

「受けたダメージ量」です。


② 自分のHPを減らしている

Hp = Hp - damage;

これは

自分のHPを自分で減らしている

ということです。

ここがオブジェクト指向らしい部分です。


🧠 実際に動かしてみる

Player player = new Player
{
    Name = "勇者",
    Hp = 100,
    Attack = 20
};

player.ShowStatus();

Console.WriteLine();

player.TakeDamage(30);

Console.WriteLine();

player.ShowStatus();

▶ 実行結果

名前: 勇者
HP: 100
攻撃力: 20

勇者 は 30 のダメージを受けた!

名前: 勇者
HP: 70
攻撃力: 20

🎯 重要なポイント

ダメージを受けた後、

HPが 70 に変わっています。

これは、

インスタンスの中のデータが

実際に変化している

ということです。

つまり:

インスタンスは「生きているデータ」

です。


🔥 オブジェクト指向が一段進んだ

最初は:

  • データの箱

でした。

今は:

  • データを持ち
  • 自分で変化できる存在

になりました。


📌 まとめ

  • メソッドは「できること」
  • 引数は「渡す情報」
  • TakeDamageはHPを書き換える
  • インスタンスは状態を持ち、変化する

ここまで来ると、

オブジェクト指向の本質が少し見えてきます。


訪問数 1 回, 今日の訪問数 1回