게임 클래스와 씬 클래스 추가
Project/Win32API로 던그리드 모작

게임 클래스와 씬 클래스 추가

Woon2World :: Programming & Art Life

 

코드

 

#ifndef _game
#define _game
 
#include <windows.h>
#include "timer.h"
#include "scene.h"
 
class game
{
public:
    void process_input( UINT msg, WPARAM w_param, LPARAM l_param )
    {
        switch ( msg )
        {
        case WM_KEYDOWN:
            keyboard( w_param );
            break;
        }
    }
 
    void on_wtimer( UINT id )
    {
        // if ( game_timer.timer_id == id )
        // {
        auto lag = game_timer.getlag();
        auto ms_per_frame = game_timer.get_ms_per_frame();
 
        if ( lag < ms_per_frame * 2 )
        {
            update();
 
            if ( lag < ms_per_frame )
            {
                render();
            }
        }
        // }
    }
 
    game( HWND hWnd, const UINT timer_id, const float fps, const float clock = 10.f ) : hWnd{ hWnd },
        game_timer{ hWnd, timer_id, fps, clock } {}
    game( const game& ) = default;
    game& operator=const game& ) = default;
 
private:
    HWND hWnd;
    timer game_timer;
    std::unique_ptr< scene > game_scene;
 
    void update()
    {
        game_timer.update();
    }
 
    void render()
    {
 
    }
 
    void keyboard( WPARAM key )
    {
 
    }
 
    void mouse( UINT msg, float x, float y )
    {
 
    }
 
    void motion( UINT msg, float x, float y )
    {
 
    }
};
 
#endif
 
 
cs

 

 

#ifndef _scene
#define _scene
 
class scene
{
public:
    virtual void process_input() = 0;
    virtual void update() = 0;
    virtual void render() = 0;
 
private:
};
 
#endif
cs

 

 

 

 

 


아직 틀만 잡힌 상태라 아주 황량하다.

 

게임 객체를 하나밖에 안 만들 것이 확실하므로

if 문은 주석처리했다. 까먹은 것이 아니라는 것을 나타내기 위해..

 

정규화된 좌표로 처리해야 가변적인 윈도우 크기에 대응할 수 있기에

mouse와 motion 함수는 float로 입력을 받을 것이다.

 

scene은 유한 상태 기계(FSM)을 적용할 것으로,

개발 중 최초의 가상 함수를 이용하는 클래스가 되겠다.

'Project > Win32API로 던그리드 모작' 카테고리의 다른 글

프로젝트 던그리드 완성  (2) 2021.12.17
fmod를 이용한 게임 사운드 프로그래밍  (0) 2021.11.06
타이머 간략화  (0) 2021.11.06
게임 타이머 구현  (0) 2021.09.21
git repository 생성  (0) 2021.09.17