코드
#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 |