📄 gameengine.h
字号:
//-----------------------------------------------------------------
// Game Engine Object
// C++ Header - GameEngine.h
//-----------------------------------------------------------------
#pragma once
//-----------------------------------------------------------------
// 包含文件
//-----------------------------------------------------------------
#include <windows.h>
#include <mmsystem.h>
#include <vector>
using namespace std;
#include "Sprite.h"
//-----------------------------------------------------------------
// 游戏杆标志
//-----------------------------------------------------------------
typedef WORD JOYSTATE;
const JOYSTATE JOY_NONE = 0x0000L,
JOY_LEFT = 0x0001L,
JOY_RIGHT = 0x0002L,
JOY_UP = 0x0004L,
JOY_DOWN = 0x0008L,
JOY_FIRE1 = 0x0010L,
JOY_FIRE2 = 0x0020L;
//-----------------------------------------------------------------
// windows函数声明
//-----------------------------------------------------------------
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow);
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
//-----------------------------------------------------------------
// 游戏引擎函数声明
//-----------------------------------------------------------------
BOOL GameInitialize(HINSTANCE hInstance);
void GameStart(HWND hWindow);
void GameEnd();
void GameActivate(HWND hWindow);
void GameDeactivate(HWND hWindow);
void GamePaint(HDC hDC);
void GameCycle();
void HandleKeys();
void MouseButtonDown(int x, int y, BOOL bLeft);
void MouseButtonUp(int x, int y, BOOL bLeft);
void MouseMove(int x, int y);
void HandleJoystick(JOYSTATE jsJoystickState);
BOOL SpriteCollision(Sprite* pSpriteHitter, Sprite* pSpriteHittee);
void SpriteDying(Sprite* pSpriteDying);
//-----------------------------------------------------------------
// GameEngine类
//-----------------------------------------------------------------
class GameEngine
{
protected:
//-----------------引擎成员变量---------------
static GameEngine* m_pGameEngine; //一个指向自己的静态指针,用于游戏程序的外部访问
HINSTANCE m_hInstance; //将游戏程序的应用程序实例存储在游戏引擎中
HWND m_hWindow; //将游戏程序的主窗口句柄存储在游戏引擎中
TCHAR m_szWindowClass[32]; //窗口类的名称
TCHAR m_szTitle[32]; //主游戏的窗口
WORD m_wIcon, m_wSmallIcon; //游戏的两个程序图标的数字ID
int m_iWidth, m_iHeight; //游戏屏幕的宽度和高度
int m_iFrameDelay; //游戏周期之间间隔的时间(单位是毫秒)
BOOL m_bSleep; //表示游戏是否在休眠(暂停)
UINT m_uiJoystickID;
RECT m_rcJoystickTrip;
vector<Sprite*> m_vSprites;
UINT m_uiMIDIPlayerID;
//----------------- 帮助器方法----------------------------------
BOOL CheckSpriteCollision(Sprite* pTestSprite);
public:
//-----------------构造函数/析构函数-----------------------------------------
GameEngine(HINSTANCE hInstance, LPTSTR szWindowClass, LPTSTR szTitle,
WORD wIcon, WORD wSmallIcon, int iWidth = 640, int iHeight = 480);
virtual ~GameEngine();
//------------------常规方法----------------------------------------------
static GameEngine* GetEngine() { return m_pGameEngine; };
BOOL Initialize(int iCmdShow);
LRESULT HandleEvent(HWND hWindow, UINT msg, WPARAM wParam,
LPARAM lParam);//负责处理游戏引擎内的标准windows事件
void ErrorQuit(LPTSTR szErrorMsg);
BOOL InitJoystick();
void CaptureJoystick();
void ReleaseJoystick();
void CheckJoystick();
void AddSprite(Sprite* pSprite);
void DrawSprites(HDC hDC);
void UpdateSprites();
void CleanupSprites();
Sprite* IsPointInSprite(int x, int y);
void PlayMIDISong(LPTSTR szMIDIFileName = TEXT(""),
BOOL bRestart = TRUE);
void PauseMIDISong();
void CloseMIDIPlayer();
//-----------------访问方法--------------------------------------
HINSTANCE GetInstance() { return m_hInstance; };
HWND GetWindow() { return m_hWindow; };
void SetWindow(HWND hWindow) { m_hWindow = hWindow; };
LPTSTR GetTitle() { return m_szTitle; };
WORD GetIcon() { return m_wIcon; };
WORD GetSmallIcon() { return m_wSmallIcon; };
int GetWidth() { return m_iWidth; };
int GetHeight() { return m_iHeight; };
int GetFrameDelay() { return m_iFrameDelay; };
void SetFrameRate(int iFrameRate) { m_iFrameDelay = 1000 /
iFrameRate; };//设置游戏引擎的帧频
BOOL GetSleep() { return m_bSleep; };
void SetSleep(BOOL bSleep) { m_bSleep = bSleep; };
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -