Q&A 를 검색한 결과를 토대로 만들어 보았는데
의문점이 생겨서요
도스콘솔에서 끄적끄적 거리고 있는중입니다.
최종적으로는 서로 다른 속도로 동시에 움직이는 방법을 알고 싶어서 혼자 연구중입니다.
일단 일정한 시간(30ms) 마다 루프가 실행 되어야 하겠더군요
그래서
main()
{
DWORD dw_FirstTime;
DWORD dw_LastTime;
DWORD dw_DelayTime;
.
.
.
for(;;)
{
dw_FirstTime = GetTickCount();
어쩌고 저쩌고...;
dw_LastTime = GetTickCount();
dw_DelayTime = dw_LastTime - dw_FirtTime;
if( dw_DelayTime < 30)
sleep(30-Dw_DelayTime);
}
}
이렇게 하면 일정한 프레임을 얻을 수 있다고 하더군요 (맞는지는 모르겠지만..)
여기서 의문점은 dw_DelayTime > 30 일 경우 입니다.
물런 여기서는 그냥 제끼고 가겠지만
루프에 많은시간을 요구하는 계산이 들어갈 경우에는 어떻게 되는 거지요?
이것을 랙이라고 부르는 건가요?
그리고 추가 질문 입니다.
이런 방법 말고 어떤 방법으로 일정한 프레임수를 유지 하십니까?
오프라인 게임에서는 그 해당 프레임만 늦춰버리는 형식을 유지하는 경우도 있습니다. 만약 강제로 프레임을 유지하게 하고 싶다면, 약간 복잡한 연산을 통해서 움직임이 프레임 기준이 아닌 시간 기준으로 움직이게 해야 겠죠.
일정한 프레임수는 정확한 함수명은 모르겠는데, 틱 카운트의 정밀도를 조절하는 함수가 있습니다. 정밀도를 높이면 좀더 높은 정확성의 시간을 얻으실수 있게 되구요.