ページ 11

クラスの使い方

Posted: 2014年12月05日(金) 16:49
by himigami
現在DXライブラリでゲームを作っているのですが、クラスの使い方として適切なのかどうかが不安なので教えて欲しいのです。

コード:

//A.h
class FPS{
public:
	static bool OverFPS;
	static int SetFPS;
	static double Revision;
	static double WindowXRev;
	static double WindowYRev;
	FPS();
	static void DrawFPS();
	static void SettingFPS();
	static void WaitFPS();
private:
	static int NowTime;
	static int StartTime;
	static int NowFPS;
	static int NowCountFPS;
	static int OneFStart;
	static int OneFNow;
	static double WaitTime;
};

コード:

//A.cpp

#include "A.h"

int FPS::NowTime;
int FPS::StartTime;
double FPS::WaitTime;
int FPS::NowCountFPS;
int FPS::SetFPS;
int FPS::NowFPS;
int FPS::OneFStart;
int FPS::OneFNow;
bool FPS::OverFPS;
double FPS::Revision;
double FPS::WindowXRev;
double FPS::WindowYRev;

FPS::FPS(){
//初期化
}


void FPS::SettingFPS(){
//FPS設定
	return;
}

void FPS::DrawFPS(){
//値表示
        return;
}

void FPS::WaitFPS(){
//待つ時間
	return;
}

コード:

//Main.h

#include "A.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	if (DxLib_Init() == -1)		// DXライブラリ初期化処理
	{
		return -1;			// エラーが起きたら直ちに終了
	}
        FPS a;
        //以降他のファイルはヘッダーの読み込みだけで使用

	DxLib_End();				// DXライブラリ使用の終了処理
	return 0;				// ソフトの終了 
}
※関数の中身は簡略しています。

とこのように静的で宣言して他のファイルでも値を共有して使えるようにしています。こういった使い方はあまりよろしくないのでしょうか?

Re: クラスの使い方

Posted: 2014年12月05日(金) 17:36
by Ketty
これは、FPS制御するためのクラスですよね(??)
であれば、1ヶ所だけ、例えばメインループを実施するであろうMain.hだけが参照すべきだと思うんです。

たとえば、SettingFPS()なんていうメソッドは、いろんな所から呼び出されると困るのではないですか?
(あっちこっちからFPSを変更されるとゲームが大変なことに…)

himigamiさんが、
これを、他のファイル(クラス?)に公開したいと思われている理由はなんでしょうか?
WindowXRevとかWindowYRevというやつが何かわからないのですが、
FPS制御と関係ない項目なのでしたら、それは別のクラスにした方がよいと思います。

Re: クラスの使い方

Posted: 2014年12月05日(金) 18:23
by himigami
あ、Main.hじゃなくてMain.cppでしたねすいません。
WindowXrevとかはウィンドウサイズの補正値ってだけでここのクラスで作るべきものではないですね。
確かに参照先がメインループだけで済むしこのような処理じゃなくてもいいですね。
指摘されて無駄処理が削減出来ました。ありがとうございました。