>>softyaさん
リンク先読ませてもらいました
オブジェクト指向は私も習得しようとしているのですが
なかなか、設計はした、ではどのようなコードがいいのか?というさらにつっこんだ内容の記事がなく
ただ、UMLのクラス図だけで終わりという記事ばかりで、実用ではないように私は感じています
意見をもらってなんなんですが、オリジナルのマイタスクシステムを作ることにしました
シンプル設計でいこうかと思いまして
構造化設計とほとんど変わらないかもしれないですけど、ゲームを作成するのが目的ですので
気にせずに進めたいと思います
そこで、DxLibを使って組んでいるところなのです
トピックを新しく作るか迷いましたが、ここを再利用します
ここの龍神録のFPS制御の方法をそのままコピーして利用させてもらってますが
どうしても60FPSがでません
各処理にかかる時間を計測しても、0.00000となっており何が原因かつかめない状態です
私のオリジナルDirectXライブラリで、同じFPS制御をしてみると60FPSでるのですが
DxLibとここのFPS制御を組み合わせると43FPSくらいで止まります
下にそのソースコードの一部と結果を載せますので、どこが問題なのかわかるかたいませんでしょうか?
コード:
static int TIME[10];
// メインループ
while(1)
{
if( -1 == ProcessMessage() )
break;
char key[256];
GetHitKeyStateAll( key );
if( key[KEY_INPUT_ESCAPE] == 1 )
break;
fps_wait();
DWORD start, end;
switch( gMode )
{
case def_mode_title:
start = timeGetTime();
gTitle.Draw();
end = timeGetTime();
TIME[0] += end - start;
TIME[1]++;
start = timeGetTime();
gTitle.Move( &gMode );
end = timeGetTime();
TIME[2] += end - start;
TIME[3]++;
break;
default:
break;
}
start = timeGetTime();
int i;
for( i=0; i<DEF_TASK_NUM+1; i++ )
{
gTask[i].Draw();
gTask[i].Move();
gTask[i].System();
gTask[i].Etc();
}
draw_fps( 0, 20 );
end = timeGetTime();
TIME[4] += end - start;
TIME[5]++;
start = timeGetTime();
ScreenFlip();
end = timeGetTime();
TIME[6] += end - start;
TIME[7]++;
}
// TIME.txtに出力
FILE *f = fopen( "TIME.txt", "wt" );
char mes[80];
sprintf( mes, "かかった時間、1フレームの時間:TIME[0]:%d %f\n", TIME[0], TIME[0]/TIME[1] );
fputs( mes, f );
sprintf( mes, "呼び出し回数:TIME[1]:%d\n", TIME[1] );
fputs( mes, f );
sprintf( mes, "かかった時間、1フレームの時間:TIME[2]:%d %f\n", TIME[2], TIME[2]/TIME[3] );
fputs( mes, f );
sprintf( mes, "呼び出し回数:TIME[3]:%d\n", TIME[3] );
fputs( mes, f );
sprintf( mes, "かかった時間、1フレームの時間:TIME[4]:%d %f\n", TIME[4], TIME[4]/TIME[5] );
fputs( mes, f );
sprintf( mes, "呼び出し回数:TIME[5]:%d\n", TIME[5] );
fputs( mes, f );
sprintf( mes, "かかった時間、1フレームの時間:TIME[6]:%d %f\n", TIME[6], TIME[6]/TIME[7] );
fputs( mes, f );
sprintf( mes, "呼び出し回数:TIME[7]:%d\n", TIME[7] );
fputs( mes, f );
fclose( f );
TIME.txtの中身
かかった時間、1フレームの時間:TIME[0]:44 0.000000
呼び出し回数:TIME[1]:696
かかった時間、1フレームの時間:TIME[2]:20 0.000000
呼び出し回数:TIME[3]:696
かかった時間、1フレームの時間:TIME[4]:657 0.000000
呼び出し回数:TIME[5]:697
かかった時間、1フレームの時間:TIME[6]:10853 0.000000
呼び出し回数:TIME[7]:697
//=======================
TIME.txtに出力の際の TIME[x] の部分のミスを修正しました