Console Project/4. GameLoop

C++|2019. 12. 10. 13:59

 게임 루프는 일정한 입, 출력 속도를 보장하고, 예기치 못한 렉에 유연하게 대응할 수 있어야 한다.

Game 클래스

Game클래스는 게임의 초기화 및 업데이트, 렌더링을 담당하는 게임의 최상위 클래스이다. 모든 게임에 대한 코드는 해당 클래스 내에서 작업 하게 된다.

class Game
{
private:
    int width;
    int height;

    bool exit;
public:
    Game(int width, int height);
    void Release();
    void Update(float deltaTime);
    void Render();

    inline bool IsExit() { return exit; }
};

GameLoop

void main() {
..

Game game(SCREEN_WIDTH, SCREEN_HEIGHT);
int targetFPS = 25;
int targetFrameMS = 1000 / targetFPS;

ULONGLONG lastTime = GetTickCount64();

while (true) {
    
    ULONGLONG current = GetTickCount64();
    ULONGLONG elapsed = current - lastTime;

    game.Update(elapsed / 1000.f);

    if (game.IsExit()) {
        break;
    }

    game.Render();

    if (targetFrameMS > elapsed) {
        Sleep(targetFrameMS - elapsed);
    }
    
    lastTime = current;
}

game.Release();

..

'C++' 카테고리의 다른 글

Console Project/5. 문자 출력  (0) 2019.12.10
Console Project/4.5 중간보고  (0) 2019.12.10
Console Project/3. 이미지  (0) 2019.12.10
Console Project/2. 출력 버퍼  (0) 2019.12.09
Console Project/1. 화면  (0) 2019.12.09

댓글()