fdg

/*************************************

游戏引擎头文件 GameEngine.h

*************************************/

 

#ifndef GAMEENGINE //条件编译,目的是防止文件被重复编译

 

#define GAMEENGINE  1 //定义条件编译的宏

 

#include "windows.h"

 

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

/* 定义游戏引擎类GameEngine */

class GameEngine

{

/* 声明不公开的成员变量 */

protected:

static GameEngine * m_pGameEngine; //静态成员,用于记录指向引擎自身的指针                                                                 

HINSTANCE m_hInstance; //当前程序实例句柄

HWND m_hWnd; //当前程序实例窗口句柄

TCHAR m_szWindowClass[50]; //窗口类名称

TCHAR m_szTitle[50]; //窗口标题

WORD m_wIcon; //程序图标(大)

WORD m_wSmallIcon; //程序图标(小)

int m_nWidth,m_nHeight; //游戏窗口宽度和高度

 

BOOL m_bFullScreen; //是否全屏显示

int m_nColorbit; //色彩模式(32位、24位或16位)

 

int m_nFrameDelay; //游戏帧延时,即两次循环的时间间隔

long m_lNextGameTick; //下一次游戏循环执行时间

long m_lStartTime; //记录游戏开始时间

BOOL m_bPause; //游戏是否处理于暂停状态

 

/* 声明成员方法 */

public:

//声明构造函数

BOOL m_bLeft,m_bRight,m_bUp,m_bDown;

GameEngine(HINSTANCE hInstance, //设置程序句柄

LPTSTR szWindowClass, //设置窗口名称

LPTSTR szTitle, //设置窗口标题

WORD wIcon, //设置图标(大)

WORD wSmallIcon, //设置图标(小)

BOOL bFullScreen=FALSE, //设置全屏,默认为FALSE

int nColorbit=32, //设置色彩模式,默认为32位色

int nWidth=800, //设置窗口宽度,默认为800像素

int nHeight=600); //设置窗口高度,默认为600像素

 

//声明虚析构函数,便于在游戏中进行扩展

virtual ~GameEngine();

 

//声明创建游戏窗口的函数

BOOL CreateGameWindow();

/* 声明成员访问方法 */

 

//获取游戏引擎指针

static GameEngine * GetGameEngine() 

{

return m_pGameEngine;

};

//获取游戏实例句柄

HINSTANCE GetInstance() 

{

return m_hInstance;

};

 

//获取、设置游戏窗口句柄

HWND GetWindow()

{

return m_hWnd;

};

 

void SetWindow(HWND hWnd)

{

m_hWnd=hWnd;

};

 

//获取、设置游戏暂停状态

BOOL GetPause()

{

return m_bPause;

};

void SetPause(BOOL bPause)

{

m_bPause=bPause;

};

 

//获取、设置游戏帧延时时间

int GetFrameDelay()

{

return m_nFrameDelay;

};

 

void SetFrameDelay(int nFrameDelay)

{

m_nFrameDelay=nFrameDelay;

};

 

//获取游戏窗口的高度和宽度

int GetWidth()

{

return m_nWidth;

};

 

int GetHeight()

{

return m_nHeight;

};

 

//获取游戏开始时间

long GetStartTime()

{

return m_lStartTime;

}

 

//设置、获取下一次游戏循环时间

void SetNextGameTick(int nNextGameTick)

{

m_lNextGameTick=nNextGameTick;

}

 

int GetNextGameTick()

{

return m_lNextGameTick;

}

};

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

/* Windows函数声明 */

 

//Windows程序入口函数声明

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdline,int nCmdShow);

 

//Windows程序消息处理函数声明

LRESULT CALLBACK WndProc(HWND hwnd,UINT message, WPARAM wParam,LPARAM lParam);

 

/* 游戏引擎函数接口声明,下面这些函数是各个游戏所特有的,必须在游戏开发时设计 */

 

//游戏初始化

BOOL GameInitialize(HINSTANCE hInstance);

 

//游戏开始

void GameStart(HWND hWnd);

 

//游戏结束

void GameEnd();

 

void GameAction(HWND hWnd);

 

 

struct speedVec

{

int x;

int y;

};

 

enum STATE

{

    NO,//不可能碰撞

    YES,//能碰撞

    INITNO,//初使没有碰撞

};

 

void state( POINT pt, STATE ballstate,speedVec NewVelocity,speedVec Velocity);

void ball(POINT pt,speedVec NewVelocity,speedVec Velocity,STATE ballstate);

void ball(double r,POINT pt,speedVec NewVelocity,speedVec Velocity,STATE ballstate);

//void CollisionResponseBetweenEdge(speedVec NewVelocity,speedVec Velocity);

 

 

void CollisionResponseBetweenEdge();

void CollisionResponseBetweenEdge2();

//画圆

void drawEllipse(HDC hDC, POINT pt,double r);

//游戏画面绘制

void GamePaint(HWND hWnd,HDC hDC,UINT message);

 

//游戏激活

void GameActive(HWND hWnd);

 

//游戏暂停

void GamePause(HWND hWnd);

 

//关闭游戏窗口

BOOL GameWindowClose(HWND hWnd);

 

#endif

你可能感兴趣的:(fdg)