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 }

效果如下图:

posted @ 2013-02-28 17:50  小楼一夜听风雨  阅读(1357)  评论(3编辑  收藏  举报