Exemplo n.º 1
0
void CGameView::OnTimer(UINT_PTR nIDEvent)
{
	// 심장소리 음악
	if (!gv_min && gv_sec < 10 && !gv_timeDV){	// 분이 0이고 초가 10초 미만일 때 시간제한 음악 켬
		StopSounds (gv_bgDV) ;
		PlaySounds (gv_timeDV) ;
	}

	CClientDC dc (this) ;
	CRect rect ;
	GetClientRect (&rect) ;
	CFont myFont, *pOldFont ;
	CString str;
	
	// Text 설정 Part
	myFont.CreateFont (25, 0, 0, 0, FW_BOLD, true, false, false, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, gv_font) ;
	pOldFont =dc.SelectObject (&myFont) ;
	dc.SetBkColor (gv_bgColor) ;		// 글자의 배경은 바탕과 같이 
	dc.SetTextColor (0x00FFFFFF & ~gv_bgColor) ;		// 글자 색을 바탕화면의 반대 색으로

	// 시간에 따른 출력부
	if (!gv_scoreTF) {
		if (gv_min < 10 && gv_min) gv_minStr.Format (_T(" 0%d"), gv_min) ;
		else if (!gv_min) gv_minStr.Format (_T (" 00")) ;
		else gv_minStr.Format (_T (" %d"), gv_min) ;
		
		if (gv_sec < 10 && gv_sec) gv_secStr.Format (_T("0%d"), gv_sec) ;
		else if (!gv_sec) gv_secStr.Format (_T ("00")) ;
		else gv_secStr.Format (_T ("%d"), gv_sec) ;

		if (gv_csec < 10 && gv_csec) gv_csecStr.Format (_T("0%d"), gv_csec) ;
		else if (!gv_csec) gv_csecStr.Format (_T ("00")) ;
		else gv_csecStr.Format (_T ("%d"), gv_csec) ;

		str.Format (_T (" %s : %s : %s "), gv_minStr, gv_secStr, gv_csecStr) ;
		dc.SetTextAlign (TA_RIGHT) ;
		dc.TextOutW (rect.Width () -20, rect.top +45, str) ;

		// 초계산
		if (--gv_csec < 0) {
			if (!gv_min && !gv_sec) OnSuccess () ;
			gv_csec =99 ;
			gv_sec-- ;
			pTimeDlg ->timeCtrl.StepIt () ;		// 초가 줄때마다 실행
		}
		if (gv_sec < 0 && gv_min) {
			gv_sec =59 ;
			gv_min-- ;
		}

		// 카운트 출력
		str.Format (_T (" CLICK COUNT : %u "), gv_cnt) ;
		dc.TextOutW (rect.Width () -20, rect.top +20, str) ;

		// 점수 출력
		dc.SetTextAlign (TA_CENTER) ;
		str.Format (_T (" Score : %u "), gv_point) ;
		dc.TextOutW (rect.Width () /2, rect.top +25, str) ;
	}
	else {
		while (gv_tempMin-- > 0) gv_tempSec +=60 ;		// 분이 남아 있다면 초로 옮김
		// 시간 감소 및 포인트 증가
		if (gv_tempSec > 0) {					// 초가 0보다 클때까지
			gv_point+=3 ; gv_tempSec-- ;			// 점수는 3증가 초는 1증감
			pTimeDlg ->timeCtrl.StepIt () ;
			dc.SetTextAlign (TA_CENTER) ;
			str.Format (_T (" Score :%u "), gv_point) ;	
			dc.TextOutW (rect.Width () /2 , rect.top +25, str) ;
		}
	}
	dc.SelectObject (myFont) ;
	myFont.DeleteObject () ;
	CView::OnTimer(nIDEvent);
}