オブジェクト指向についてまだあまり理解できていないためそのままの使用に違和感を覚えます。
DxLibを使用して、LoadGraphなどを使い、メンバにロード、描画、画像開放をまとめたクラスです。
LoadDivGraphによる分割読み込みに対応させるため、可変配列を使用してます。
分割しない場合は[0]にのみハンドルが格納されます。
// Graphic.h
class Graphic
{
private:
bool isopen_;
bool isdiv_;
std::vector<int> handle_;
char* filename_;
size_t filesize_;
Graphic(const Graphic&){}
public:
Graphic(void);
Graphic(char* filename);
~Graphic(void);
/**
* ファイルを開いているかどうか
* @retval true.開いている false.開いていない
*/
const bool GetIsOpen()const
{
return isopen_;
}
/**
* ファイルサイズを返す
*/
const size_t GetFileSize()const
{
return filesize_;
}
/**
* ファイルパスの設定
* @retval 1.成功 0.失敗
*/
int SetPath(char* filename);
/**
* ファイルパスから画像をオープン
* @retval 1.成功 0.失敗 -1.画像がすでにオープンされています
*/
int Open(void);
int Open(int xnum,int ynum,int xsize,int ysize);
/**
* 画像をクローズ
* @retval 1.成功 0.失敗 -1.画像が既にクローズされています
*/
int Close(void);
/**
* 画像を描画
* @retval 1.成功 0.失敗 -1.画像がオープンされていません
*/
int Show(int x,int y,int num = 0);
int Show(int x,int y,double exrate,int num = 0);
};
おそらくこのインスタンスを複数利用すると思います。
もしクラス形式でメンバにする場合、おそらく以下の様な書き方になると思います。
// Initでオブジェクトを作る
CGraphic* actor;
CGraphic* enemy[]; // 仮
// Draw
actor.Show( pos_x, pos_y );
...
for(int i=0; ...)
{
enemy[i].Show(...);
}
ですが私的には、できれば画像情報を構造体で管理したいと思っています。
ロード関数等を含んだクラスをシングルトンとして、ヘッダーincludeすればどこでも使えるように
すれば、おそらく見栄えも良く、適切だと感じます。
そこでみなさんに意見を伺いたく思い、投稿しました。
クラスで管理した場合と、構造体とシングルトンな関数で管理する場合、
また、その他最適な方法があるかもしれませんが、
どちらが管理方法として良いか、またそれは何故かを聞かせてください。