벽돌을 아래로 내려보자..
타이머는 WM_TIMER 메세지를 사용하며 OnTimer()라는 함수명을 사용한다.
타이머는
1. 초기화 (타이머선택, 타이머 간격 등 설정)를 하고
2. 일정시간마다 실행할 코드 작성
타이머 초기화는 프로그램이 실행될때 한번만 해주면 된다.
void CWATTetrisView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
SetTimer(1,1000,NULL); // 1번 타이머를 1000mS(즉,1초)마다 동작
}
벽돌을 내리는 함수추가
void CWATTetrisView::OnTimer(UINT nIDEvent)
{
m_iNowBlockY +=1;
Invalidate();
CFormView::OnTimer(nIDEvent);
}
벽돌 이동을 함수로 변경
앞으로 벽돌의 이동에 관련된 함수는 많이 쓰일것이다.
벽돌이 이동할수 있는지, 회전할수 있는지, 바닥에 닿았는지 등 체크할것이 많아 질것이기 때문에
지금 함수로 작업해 놓으면 나중에 편하게 작업 할수 있다.
아래처럼 4개의 함수를 만들고 내용을 추가하자.
(사실상 UP키 기능은 필요없지만 테스트용으로 사용하기 위해 추가했다.)
BOOL MoveDown();
BOOL MoveUp();
BOOL MoveRight();
BOOL MoveLeft();
코드가 훨씬 깔끔해 졌을 것이다.
소스코드 : WATTetris_20071013.zip
강의 잘 보고 있습니다. 여기서 문제는 setTimer(1,100,NULL)을 선언해줘야하는데 어디서 선언하는지 가르쳐주시면 감사하겠습니다.