アニメプレーヤーをクラスで組んでみよう

クラスとは、変数と、関数をいれたいれものと考えたらよいでしょう。

たくさん、はいっていると、いろんなことができそうです。

ただし、プログラムを改ざんされないよう、変数は、外部プログラムは、

アクセスできないようになっています。

つまり、変数は原則非公開(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();

のようにして使います。

とりあえずここまで