设为首页 加入收藏

TOP

基础动画显示游戏循环的使用(二)
2012-11-02 08:52:36 】 浏览:19439
Tags:基础 动画 显示 游戏 循环 使用

   
    <4>注释点4:if条件式中,“tPre”记录前次绘图的时间,而“tNow-tRre”则是计算上次绘图到这次循环运行之间相差多少时间。这里设置为若相差40个单位时间以上则再次进行绘图的操作,通过这个数值的控制可以调整游戏运行的速度。这里设定40个单位时间(微秒)的原因是,因为每隔40个单位进行一次绘图的操作,那么1秒钟大约重绘窗口1000/40=25次刚好可以达到期望值。
   
    由于循环的运行速度远比定时器发出时间信号来得快,因此使用游戏循环可以更精准地控制程序运行速度并提高每秒钟画面重绘的次数。
   
    了解了游戏循环使用的基本概念之后,接下来的范例将以游戏循环的方法进行窗口的连续贴图,更精确地制作游戏动画效果。
   
    #include “stdafx.h”
   
    #include <stdio.h>
   
    //全局变量声明
   
    HINSTANCE hInst;
   
    HBITMAP man ;
   
    HDC  hdc,mdc;
   
    HWND    hWnd;
   
    DWORD   tPre,tNow,tCheck;                 //声明三个函数来记录时间,tPre记录上一次绘图的时间,tNow记录此次准备绘图的时间,tCheck记录每秒开始的时间
   
    int  num,frame,fps;                    //num用来记录图号,frame用来累加每次画面更新的次数,fps(frame per second)用来记录每秒画面更新的次数
   
    //全局函数的声明
   
    ATOM     MyRegisterClass
   
    (HINSTANCE hInstance);
   
    BOOL     InitInstance
   
    (HINSTANCE, int);
   
    LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM,
   
    LPARAM);
   
    void     MyPaint(HDC hdc);
   
    //***WinMain函数,程序入口点函数**************************************
   
    int APIENTRY WinMain(HINSTANCE hInstance,
   
    HINSTANCE hPrevInstance,
   
    LPSTR     lpCmdLine,
   
    int       nCmdShow)
   
    {
   
    MSG msg;
   
    MyRegisterClass(hInstance);
   
    //运行初始化函数
   
    if (!InitInstance (hInstance, nCmdShow))
   
    {
   
    return FALSE;
   
    }
   
    GetMessage(&msg,NULL,NULL,NULL);   //感谢xiaoxiangp的提醒,需要在进入消息循环之前初始化msg,避免了死循环发生的可能性。
   

          

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 2/42/42
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇VC++编程实现镜像劫持 下一篇DirectX 11各组件的介绍

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目