シューティングゲームの作成に取り組んでいます。
OSはWindows 7 Home Premium ( 64 bit )、Visual C++ 2008 Express Editionを使用しています。
C++の知識としては、「新・ゲームプログラミングの館」の内容を一通り理解した上でコーディングできる程度です。
今回ゲームを作成するにあたって、オブジェクト指向の勉強も進めようと思い
自機のクラスMyShip、敵機のクラスEnemy等、ゲーム本体に登場させるキャラクターを作成し、それぞれに初期化・計算・描画等の処理を持たせました。
今回質問したいのは、画像や音楽の扱い方に関してです。
今のところ、画像ハンドルを保持するクラスを作成し、画像の種類ごとに以下のような変数を持たせています。
privateには各種ハンドルを、publicにはそのハンドルを返す関数を入れています。
<Graph.h>
class CGraph{
private:
int Mover[MOVER_TYPE][MOVER_NUM][ANIMATION]; //Moverの画像ハンドル
int Effect[IMG_EFFECT][COLORTYPE]; //エフェクトの
int Board[IMG_BOARD]; //ボードの
int BG[IMG_BG]; //背景の
int Other[IMG_OTHER]; //その他の
public:
CGraph(); //コンストラクタ
//画像ハンドルを返す関数
int GetMover(int, int, int); //[種類][番号][アニメーション]
int GetEffect(int, int); //[番号][色]
int GetBoard(int); //[番号]
int GetBG(int); //[番号]
int GetOther(int); //[番号]
};
また、先述した各種クラスは画像ハンドルを保持しておらず、「描画処理」の部分で
//[x座標][y座標][拡大率][角度][画像ハンドル][透過]
DrawRotaGraph((int)x, (int)y, scale, 0, Graph1->GetMover(mover_type, img_num, img_type), TRUE);
これは、オブジェクト指向としては誤った作成方法でしょうか。
また、もし誤っているのならば、各種画像ハンドルはいつ、どのようなタイミングで作成すべきなのでしょうか。
また、音楽ファイルについても同様の形で作っているのですが、同様の悩みを抱えております。
初めての書き込みのため至らぬ点は多いかと思いますが、どうぞご教示のほどよろしくお願いします。