| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 504 人关注过本帖
标题:函数问题,我还是弄不懂?
只看楼主 加入收藏
q345918550q
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2010-3-28
结帖率:30%
收藏
已结贴  问题点数:15 回复次数:4 
函数问题,我还是弄不懂?
//Game.h
#pragma once
#include<windows.h>
#include <math.h>

//#define FX(x) 300-(100*sin(x))

class CGame
{
    public:
        CGame(HWND hWnd,int fps=1)
        {
            hwnd=hWnd;
            nFps=fps;
            Init();
        }
   
        void Update();
        void Init();
        virtual void Render();                                

    protected:
        virtual void Update(float fDeltaTime);               
        int                    nFps;                        
        unsigned int        nFrames;                    
        DWORD                t0;                        
        float t;                                       
        int                    nFixedDeltaTime;            
        HWND hwnd;
        
    private:
        float m_x;
   
};
//Game.cpp
#include "Game.h"

void CGame::Init()
{
   
    nFixedDeltaTime=1000/nFps;
    t0=GetTickCount();
    t = 0;
    nFrames = 0;
    m_x=0;
   
}
void CGame::Update()
{
   
    DWORD dt = 0,t1;
    t1=GetTickCount();
    dt=t1 - t0;

    if (dt >= nFixedDeltaTime)                           
    {
        t0 = t1;                                
        Update(dt / 1000.0);                           
        t += dt / 1000.0;
        Render();                                       
        nFrames++;
    }
   

}
void CGame::Update(float fDeltaTime)
{
    m_x+=1;
    if(m_x>800)m_x=0;

}
void CGame::Render()
{
   
    float x=0,y=0;
    RECT rect ={0,0,800,600};
    HDC hdc=GetDC(hwnd);
    HPEN hOldPen,hPen=CreatePen(PS_SOLID, 15, RGB(0,255,255));
    hOldPen=(HPEN)SelectObject(hdc,hPen);
    //SelectObject(hdc,hOldPen);
    FillRect(hdc,&rect,(HBRUSH)GetStockObject(LTGRAY_BRUSH));
    for(int i=0;i<m_x;i++){
    x=i*3.1415926f/180.0f;
    y=300-(100*sin(x));
    //SetPixel(hdc,i,y,RGB(0,255,0));
    Ellipse(hdc,i,y,i+10,y+10);
    }
    ReleaseDC(hwnd,hdc);
}

//main.cpp
#include "Game.h"
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM );  

CGame *pMyGame;
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                     LPSTR lpCmdLine,int nCmdShow)
{
    static TCHAR szAppName[]=TEXT("Hello Game");
    WNDCLASS wndclass;        
    HWND hwnd;               
    MSG msg;                  
     wndclass.style=CS_HREDRAW|CS_VREDRAW;      
    wndclass.lpfnWndProc=WndProc;               
    wndclass.cbClsExtra=0;                     
    wndclass.cbWndExtra=0;                     
    wndclass.hInstance=hInstance;               
    wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);   
    wndclass.hbrBackground=NULL;
    wndclass.lpszMenuName=NULL;                 
    wndclass.lpszClassName=szAppName;         


    if(!RegisterClass(&wndclass)) {
        MessageBox(NULL,TEXT("注册失败!"),szAppName,MB_ICONERROR);
        return -1;
    }

   
    hwnd = CreateWindow(szAppName,
        szAppName,
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,CW_USEDEFAULT,800,600,
        NULL,
        NULL,
        hInstance,
        NULL        );
    ShowWindow(hwnd,nCmdShow);              
    UpdateWindow(hwnd);                     

    pMyGame=new CGame(hwnd,60);
    msg.message   =   WM_NULL;   

    BOOL  bMessage;
    PeekMessage(&msg, NULL, 0, 0,PM_NOREMOVE);
    while(msg.message != WM_QUIT)
    {
        bMessage = PeekMessage(&msg, NULL, 0, 0, PM_REMOVE);
        if(bMessage)
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        pMyGame->Update();                                                        
    }
    if (pMyGame)                                                                    
    {
        delete pMyGame;
    }

    return   (int)msg.wParam;   

}


LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam, LPARAM lParam)
{
    switch(message)                  
    {
    case  WM_DESTROY:               
        PostQuitMessage(0);         
        return 0;

    }
    return DefWindowProc(hwnd,message,wParam,lParam);
}
请问Game.h,Game.cpp和main.cpp是怎样执行的,还有那个Init()函数什么时候执行的?(尽量详细一点)
搜索更多相关主题的帖子: 弄不懂 函数 
2010-09-13 20:55
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:5 
第一个文件 相当于第二个文件和第三个文件的库函数文件 在第三和第二个中可以直接用第一个文件定义的函数 而不用再定义

清风拂暮(木)
2010-09-13 20:59
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:0 
至于void CGame::Init()
中间的那四个点我就不知道是什么意思了

清风拂暮(木)
2010-09-13 21:01
gongyaping
Rank: 4
来 自:广东肇庆怀集
等 级:业余侠客
帖 子:174
专家分:257
注 册:2010-8-1
收藏
得分:5 
新手,学习中。
2010-09-14 07:59
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:5 
以下是引用清风拂晓在2010-9-13 21:01:25的发言:

至于void CGame::Init()
中间的那四个点我就不知道是什么意思了
域名解析符
2010-09-14 09:10
快速回复:函数问题,我还是弄不懂?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.066311 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved