POINT m_player; 일때...
Timer 를 써서 해봅시다. 쓰레드를 쓰는건 옵션이구요...
만약 onButton1 클릭시
{
dy = -3; //전역
SetTimer(1,50,NULL);
}
OnTimer()
{
m_player.y += dy;
dy+=0.01;
if (m_player.y > 점프시작한y축값 ) {
m_player.y = 점프시작한 y축값;
KillTimer(1);
}
Invalidate(TRUE);
}
동작원리 첨에 m_player.y 는 -3 을 빼게되므로 모니터상에서 위로 올라가는것처럼 보이겠죠
그담에는 얼마입니까 -3 이아니고 -2.99 죠? 그담엔요. -2.98 계속가다보면 dy 는 0 이됩니다
그럼 더해도 좌표에는 변함이 없고
또 그담엔 dy 는 양수가 됩니다. 양수를 더하므로 좌표는 이제 아래쪽으로 내려오게 됩니다.
그래서 처음 출발한 점보다 커지는 순간 그점으로 셋팅하고 타이머 종료합니다.
* 중요 dy = -3 ; 과 dy+=0.01; 는 정확한숫자가 아닙니다. 초기값이 클수록 빠르게 위로 상승할것이며 증가값
dy+=0.01 이 크면
빠르게 내려오게 됩니다. 늦게 올라가고 늦게 내려오려면 초기값과 증가값모두 작게 |