MFC---鼠标单击小游戏简单实现
声明:主要参考《MFC实例》
功能:测试点击鼠标的速度,在界面上显示速度和级别。
过程:1、单击开始后获取开始时间,初始化计数为0并设置开始状态为true;
2、响应单击鼠标左键消息。如果开始状态为假则直接返回,这主要是为避免在单击开始之前就进行计数。此时由于开始时间未知,会在计算速度时产生未知的结果:
1 endTime = CTime::GetCurrentTime(); // 获取当前结束时间 2 timeSpan = endTime - beginTime; // 计算时间差 3 float seconds = (float)(timeSpan.GetSeconds()); 4 if (seconds) 5 { 6 m_rate = count / seconds * 60; 7 }
之后对速度进行分类并给出对应级别。
主要代码如下:
1 void CClickMouseDlg::OnLButtonDown(UINT nFlags, CPoint point) 2 { 3 // TODO: Add your message handler code here and/or call default 4 if (false == m_start) 5 { 6 return; // 未单击开始则不进入计数 7 } 8 count++; 9 10 CDialog::OnLButtonDown(nFlags, point); 11 12 endTime = CTime::GetCurrentTime(); // 获取当前结束时间 13 timeSpan = endTime - beginTime; // 计算时间差 14 float seconds = (float)(timeSpan.GetSeconds()); 15 if (seconds) 16 { 17 m_rate = count / seconds * 60; 18 } 19 20 if (m_rate < 280) 21 { 22 m_level = "新手入门"; 23 } 24 else if (m_rate >= 280 && m_rate < 310) 25 { 26 m_level = "鼠标达人"; 27 } 28 else if (m_rate >= 310 && m_rate < 340) 29 { 30 m_level = "鼠标强人"; 31 } 32 else if (m_rate >= 340 && m_rate < 370) 33 { 34 m_level = "鼠标牛人"; 35 } 36 else if (m_rate >= 370 && m_rate < 400) 37 { 38 m_level = "鼠标超人"; 39 } 40 else if (m_rate >= 400 && m_rate < 420) 41 { 42 m_level = "鼠标无影手"; 43 } 44 else 45 { 46 m_level = "天下无敌"; 47 } 48 49 UpdateData(false); 50 } 51 52 void CClickMouseDlg::OnButtonClick() 53 { 54 // TODO: Add your control notification handler code here 55 beginTime = CTime::GetCurrentTime(); 56 count = 0; 57 m_start = true; // 设置单击开始后状态为真 58 }
效果如下图: