ゲームキャラクターで理解するオブジェクト指向

― 設計図からいくつでも作れる世界 ―

では前回の「LINEグループの例え」を、今度はゲームのキャラクターに置き換えて、オブジェクト指向をさらに実感できる続編記事として書きます。


前回の情報


1. はじめに

前回の記事では、LINEグループを例にしてオブジェクト指向を説明しました。

今回はそれをゲーム開発の視点に置き換えてみます。

もしあなたがゲームの主人公を作っているとしたら、同じ方法で敵キャラクターや仲間キャラクターも作れます。

そのとき重要になるのが、やはり「クラス」と「オブジェクト」という考え方です。


2. ゲームに出てくるキャラクターは何体でも作れる

想像してみてください。

もしゲームの世界に1体のキャラクターしか存在できなかったら…

  • 主人公も敵も同じキャラ
  • 見た目も名前も同じ
  • HPや攻撃力も同じ

…そんなゲーム、遊んでいても面白くありません。

そこで必要になるのが「キャラクターの設計図」を作り、それを元にいくつでもキャラクターを生み出す仕組みです。


3. キャラクターの設計図=クラス

  • クラス:キャラクターの設計図「名前」「HP」「攻撃力」「攻撃する機能」などを定義します。
  • オブジェクト:設計図から作った実際のキャラクター主人公、スライム、ゴブリン、ドラゴン…これらは同じ設計図から作られていますが、ステータスや見た目は異なります。

4. 図解でイメージ

[クラス] Character
 ├─ 名前
 ├─ HP
 ├─ 攻撃力
 └─ Attack()

[オブジェクト] 主人公
 ├─ 名前: "勇者"
 ├─ HP: 100
 ├─ 攻撃力: 15
 └─ Attack(): 「剣で攻撃!」

[オブジェクト] スライム
 ├─ 名前: "スライム"
 ├─ HP: 20
 ├─ 攻撃力: 5
 └─ Attack(): 「体当たり!」

5. C#の例

class Character
{
    public string Name;
    public int HP;
    public int AttackPower;

    public void Attack()
    {
        Console.WriteLine($"{Name}の攻撃! {AttackPower}のダメージ!");
    }
}

class Program
{
    static void Main()
    {
        var hero = new Character { Name = "勇者", HP = 100, AttackPower = 15 };
        var slime = new Character { Name = "スライム", HP = 20, AttackPower = 5 };

        hero.Attack();   // 勇者の攻撃! 15のダメージ!
        slime.Attack();  // スライムの攻撃! 5のダメージ!
    }
}

ここでポイントは、Character クラス(設計図)は1つしか書いていないのに、hero と slime という2つのオブジェクトを作れていることです。


6. LINEグループの例とつながるポイント

前回のLINEグループと今回のキャラクター例には共通点があります。

LINEグループゲームキャラクター
グループの設計図(クラス)キャラクターの設計図(クラス)
家族グループ、友達グループ勇者、スライム
メンバーや履歴が異なる名前やHPが異なる

つまり、設計図さえ作れば、必要なだけオブジェクトを生み出せるのがオブジェクト指向です。


7. まとめ

  • 設計図(クラス)から実物(オブジェクト)を作るのがオブジェクト指向
  • LINEグループでも、ゲームキャラクターでも同じ考え方
  • 実物は何体でも作れるので、現実世界の「種類は同じでも中身が違う」という概念を再現できる

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