ゲームキャラクターで理解するオブジェクト指向
― 設計図からいくつでも作れる世界 ―
では前回の「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回
ディスカッション
コメント一覧
まだ、コメントがありません