C++で初代マリオのようなゲームを作る場合、敵キャラクターの共通挙動を効率よく管理することは重要です。特定の動作(ブロックにぶつかれば反転するなど)を共通クラスにまとめ、個別の敵クラスで独自の行動を追加する方法を解説します。
共通の敵クラスを作成する
まず、共通の挙動を持つEnemyBaseクラスを作成します。ここに位置情報や速度、反転処理などのメンバ関数を定義します。
例えば、move()関数で衝突判定と反転を行い、draw()関数で描画するなど、全ての敵に共通する機能を実装します。
個別の敵クラスで継承する
共通クラスEnemyBaseを継承して、GoombaやKoopaなどの個別クラスを作ります。個別クラスでは、固有の攻撃パターンやスコア処理などを追加します。
このとき、move()関数をオーバーライドして独自の挙動を追加することも可能です。基本動作はEnemyBaseのmove()を呼び出しつつ、独自処理を加える形にします。
複数の敵を管理する方法
複数の敵を同じ共通クラスで管理する場合、std::vector
例えば、std::vector
ポインタとスマートポインタの活用
ポインタを使用することで、EnemyBase型のコンテナに異なる派生クラスを格納できます。スマートポインタ(std::unique_ptrやstd::shared_ptr)を使うと、メモリ管理も安全に行えます。
実例として、std::vector
まとめ
C++でゲームの敵を作る際は、共通クラスに基本挙動をまとめ、派生クラスで個別動作を追加するのが基本パターンです。複数敵の管理にはポインタやスマートポインタを用いたコンテナが便利で、move()やdraw()などの共通処理をループで呼ぶことで効率よく制御できます。
この方法を用いれば、複数の敵キャラクターを共通挙動と独自機能の両立で簡単に管理可能です。


コメント