1. 処理速度を一定にする。
パソコンのゲームを作成するときには、モニタのリフレッシュレートを意識する必要があります。
パソコンの性能がよく、モニタのリフレッシュレートが高い環境では、処理が早く進むようなゲームは
よろしくありません。ですから処理速度を一定にする必要があります。
裏画面を表画面へ反映する ScreenFlip() ; は使用しているモニタがリフレッシュする時に処理が行われます。
ですからモニタの設定が60ヘルツの場合は、これが1秒間に60回行われます。
つまり1回の処理は1/60秒≒17ミリ秒に1度ということです。
モニタは一部を除き、最低60ヘルツで動いています。今回はこれを基準に処理を行っていきましょう。
まず、処理を17ミリ秒より早く行いたくないわけですから、最初に時間をはかっておき、処理の最後に
17ミリ秒より早ければ、その場で17ミリ秒たつまで待たせたらいいわけです。
以下のサンプルではそれを行っています。
サンプルはこれからのために「main.cpp」という名前のファイルで行ってください。
わからない関数があれば、こちらで調べてください。
//素材必要なし
#include "DxLib.h" char Key[256]; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ int RefreshTime; ChangeWindowMode( TRUE ) ; if( DxLib_Init() == -1 ) return -1; SetDrawScreen( DX_SCREEN_BACK ) ; //裏画面を使用する。 while(ProcessMessage() == 0 && GetHitKeyStateAll(Key) == 0){ RefreshTime = GetNowCount(); //今の時間を取得 ClearDrawScreen(); //裏画面のデータを全て削除 ScreenFlip() ; //裏画面データを表画面へ反映 if(Key[KEY_INPUT_ESCAPE]==1) break; //Escapeが押されたら終了 while(GetNowCount() - RefreshTime < 17); //1周の処理が17ミリ秒になるまで待つ } DxLib_End() ; return 0 ; }
実行結果
なし
DXライブラリ著作権表示
DX Library Copyright (C) 2001-2006 Takumi
Yamada.