アニメプレーヤーをクラスで組んでみよう
クラスとは、変数と、関数をいれたいれものと考えたらよいでしょう。
たくさん、はいっていると、いろんなことができそうです。
ただし、プログラムを改ざんされないよう、変数は、外部プログラムは、
アクセスできないようになっています。
つまり、変数は原則非公開(private),関数は公開(public)となっています。
また、クラスを格納するプログラムは、CAnimePlayer.cppのように
名前の頭にCをつけるようになっています。
この中に
class CAnimePlayer{
};
がはいることになります。
変数を上に、関数を下に書くと
class CAnimePlayer{
private:
変数
public:
関数
};
となります。
また、クラスと同じ名前の関数がはいっていることがあります。
データ型はついていません
CAnimePlayer();
~CAnimePlayer();
最初の関数は、クラスのオブジェクトまたは、インスタンスをつくるときに
使われます。なくても、デフォルトで用意されます。
オブジェクトをつくるので、コンストラクターとよばれています。
もうひとつ、頭にチルダマークのついた、関数がありますが、
これは、クラスのオブジェクトまたは、インスタンスが削除されるときに
呼び出されます。これで、消えますが、なにかやり残したものは、ありませんか
という関数です。
デストラクターとよばれています。
したがって、少しクラスの例を書いてみると
CAnimePlayer.h ヘッダーに
class CAnimePlayer{
private:
XMFLOAT3 m_pos={0,0,0};;
public:
void Init();
void Update();
void Draw();
void Release();
};
CAnimePlayer* GetAnimePlayer();
変数は、メンバー変数ということで、頭にm_がつきます。
この最後のゲッター関数は、クラスのオブジェクトをゲットする
関数です。
XMというのは、DirectXMathの略です。
従って、#include <DirectXMath.h>ヘッダーがいります。
今度はCAnimePlayer.cppのはじめのところをみてみます。
#include "CAnimePlayer.h"
CAnimePlayer g_aplayer;
CAnimePlayer* GetAnimePlayer(){
return &g_aplayer;
}
void CAnimePlayer::Init(){
}
...
ということで、クラスのオブジェクトの定義と
グローバル領域にかいたので、グローバル変数ということで、
頭にg_がついています。
aplayerというのは、animeplayerが長いので、短くしました。
関数名の頭には
void CAnimePlayer::がつきます。(コロン、コロン)
スコープ解決演算子つきです。
シーン管理プログラムのそれぞれ、初期化
更新、描画関数で
毎回
CAnimePlayer* aplayer=GetAnimePlayer();
aplayer->Init();
のようにして使います。
とりあえずここまで