シューティングゲームの館

今日 昨日


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.