⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gameengine.h

📁 [简介] 名称:《打猎》-附源代码 (代码行数:1773 注释行数:363) 开发环境:WinXp+VC.Net2005+Win32 API 作者:mj 联系方式:mj055@yahoo.cn
💻 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 + -