ゲームを作る上であると便利なもの その1 - obj基本クラス -

 何となく僕がゲームのプログラムを組む上であると格段に楽もしくは便利になるものを書き記しておく。



 一応、今回紹介する(予定な)のは、

・「obj基本クラス

・「obj設置基本クラス

・「接触判定処理クラス

・「捨てゲーボタン

・「デモ・リプレイ

の5つ。





 なわけで、今回は「obj基本クラス」のお話。

言うまでも無く、

オブジェクト(obj)を表現するのに必要な変数の内基本的なものをまとめたクラス(もしくは構造体)

のことです。

 ゲームを作る上で「obj表現」に必要なものは何かというと、

とりあえず、

・座標

があれば十分です。*1

なので、

typedef class class_PRIMARY
{
protected:
    int x, y;
} PRIMARY;

こんな感じで定義しておいて、コイツから継承してやればOK。*2

継承が使えなかったとしても、メンバ変数にでも加えておけばOK。



 とはいえ、座標だけだと使い辛いので、

他にもいくつかメンバを加えておくといい。

一応以下僕が使っているものリスト。(「」内は僕が使う際に付けている名前)

・サイズ:「w, h」

… 判定処理・描画の際にあると非常に便利。…というか必須。

・仮想描画関数:「Draw()」

… objなので、描画することも多かろうということで。

・仮想処理関数:「Process()」「update()」

… 毎フレの処理もほぼ確実に入るだろうということで。

・生存フラグ:「valid」

… 生死や表示/非表示あたりを切り替える際に便利。

    というか、生存の方はキャラクタの制御をするなら必須。

接触フラグ:「collisioned」

  … 後述の接触基本クラスと組み合わせるとif文x1で接触判定ができるようになるので便利。

・objタイプ:「type」

  … 基本クラスの方にタイプを記述しておけば、基本クラスからでもどんなobjかわかるようになる。

    接触フラグと組み合わせると更に便利に。





 そんな感じで、座標だけでもまとめておくと便利ですよと言うお話でした。

 --- 09/09/13 01:54タイトル等追記




*1:そんなに厳密ではないけど、「最小限」という意味合いね。

*2:ちなみに僕はクラスじゃなくて構造体にして使ってます。…アクセス制限あると面倒なので(苦笑)