资源描述:
《VC++游戏编程之定时器》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一、定时器事实上游戏本身几乎都是以无限循环的方式不断地在游戏窗口进行窗口画面的重绘操作,即使画面没有任何变化,这个重绘的操作还是会不断地进行,一直到游戏结束为止。这一节将介绍如何利用WINDOWS本身的定时器及游戏中常用的游戏循环来制作游戏的动态效果。Timer定时器对象可以再每隔一段时间发出一个WM_TIMER时间消息,程序收到消息后,就可以执行一些操作。比如,可以设置定时器来播放静态的连续图片,就可以产生动画效果。这也是通常显示动画的一种方式。WindowsAPI中有这样的函数:SetTime
2、r()为我们定义一个定时器。函数原型:1.UINT_PTR SetTimer( 2. HWND hWnd, // 窗口句柄 3. UINT_PTR nIDEvent, // 定时器代号 4. UINT uElapse, // 时间设定的值,单位为毫秒 5. TIMERPROC lpTimerFunc // 定时器响应函数 6.); UINT_PTRSetTimer(HWNDhWnd,//窗口句柄UINT_PTRnIDE
3、vent,//定时器代号UINTuElapse,//时间设定的值,单位为毫秒TIMERPROClpTimerFunc//定时器响应函数);这里举一个小例子:1.SetTimer(hwnd, // 窗口句柄 2. IDT_TIMER1, // 代号 3. 10000, // 10秒 4. (TIMERPROC) NULL); // 没有响应函数 5
4、. 6.SetTimer(hwnd, 7. IDT_TIMER2, 8. 5000, 9. (TIMERPROC) NULL); 10. 11.case WM_TIMER: 12. switch (wParam) 13. { 14. case IDT_TIMER1: 15. // 执行
5、10秒的操作 16. return 0; 17. case IDT_TIMER2: 1. // 执行5秒的操作 2. return 0; 3.} SetTimer(hwnd,//窗口句柄IDT_TIMER1,//代号10000,//10秒(TIMERPROC)NULL);//没有响应函数SetTimer(hwnd,IDT_TIMER2,5000,(TIMERPROC)NULL);caseWM_TI
6、MER:switch(wParam){caseIDT_TIMER1://执行10秒的操作return0;caseIDT_TIMER2://执行5秒的操作return0;}创建后自然需要删除定时器。KillTimer()就是用来终止某个定时器的1.BOOL KillTimer( 2. HWND hWnd, // 窗口句柄 3. UINT_PTR uIDEvent // 定时器代号 4.); BOOLKillTimer(HWNDhWnd,//窗口句柄UINT_PTRu
7、IDEvent//定时器代号); 运用定时器使预先做好的连续的静态图片播放,形成动画的效果。新建Win32程序,在VC++6.0中默认使用默认的生成窗口的代码。在大致的了解了定时器的使用方法后,接下来将会运用定时器使预先准备好的几张连续摆动的位图产生动画效果。如图。接下来,在程序头部添加全局变量:1.HBITMAP girl[7]; // 用于7张人物的位图数组 2.HDC mdc,hmdc; 3.int num; // 用于计数循环 HBITMAPgirl[7];//用于7张人物的位图数组
8、HDCmdc,hmdc;intnum;//用于计数循环 在InitInstance()函数中添加代码:1.BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) 2.{ 3. HWND hWnd; 4. char filename[20] = ""; 1. int i; 2. 3. hInst = hInstance; // 将实例句柄存储在全局变量中 4. 5. hWnd =