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

📄 gameengine.h

📁 一个小的类似于雷电的射击游戏
💻 H
字号:
#pragma once

#include <list>
#include "stdafx.h"
#include "Resource.h"
#include "Windows.h"
#include "Sprite.h"
#include "Fighter.h"
#include "Bullet.h"
#include "EnemyFigher.h"
#include "MusicPlay.h"

using namespace std;

class GameEngine
{
public:
	// Construction function and Destruction function
	GameEngine(int iWidth = 480, int iHeight = 640);
	virtual		~GameEngine(void);

	BOOL		Initialize();

	// Access Method
	HWND		GetWindow() { return m_hWindow; };
	int			GetWidth() { return m_iWidth; };
	int			GetHeight() { return m_iHeight; };
	int			GetFrameDelay() { return m_iFrameDelay; };
	BOOL		GetSleep() { return m_bSleep; };
	BOOL		IsGameOver() { return m_bGameOver; };

	void		SetWindow(HWND hWindow) { m_hWindow = hWindow; };
	void		SetFrameRate(int iFrameRate) {
		m_iFrameDelay = 1000 / iFrameRate;
	};
	void		SetSleep(BOOL bSleep) { m_bSleep = bSleep; };
	// 键盘消息处理函数
	void		KeyDown(WPARAM);
	void		KeyUp(WPARAM);

	// 以下是一组Sprite管理方法

	// 检查两个精灵碰撞
	BOOL		SpriteCollision(Sprite* pSpriteHitter, Sprite* pSpriteHittee);
	// 检查一个Sprite是否与其他精灵碰撞,调用SpriteCollision
	BOOL		CheckSpriteCollision(Sprite* pTestSprite);
	// 针对3种碰撞情况,写了三个函数
	void		CheckFighterHitting();
	void		CheckFighterHitted();
	void		CheckFighterCollistion();

	//void		AddSprite(Sprite* pSprite);
	Sprite*		AddSprite(Bullet* pBullet);
	Sprite*		AddExplodeAnimation(Sprite* pSprite);
	void		AddBoss(void);
	void		AddEnemy(void);
	void		Draw(HDC hDC);
	void		Update();
	void		CleanUpSprite();
	// 检查一个点是否在一个精灵内部
	Sprite*		IsPointInSprite(int x, int y);

private:
	// Member variables
	HWND				m_hWindow;
	int					m_iWidth, m_iHeight;
	int					m_iFrameDelay;
	int					m_iCurrentKey;
	int					m_iBufferKey;			// 键盘缓冲
	UINT				m_uCount;				// 计数器
	BOOL				m_bHaveBoss;			// 有BOSS没?没有给你一个
	BOOL				m_bSleep;
	Fighter				*m_pFighter;
	Bitmap				*m_pSmallFighter;		// 显示战机数量的小图片
	int					m_iLife;				// 战机数量
	BOOL				m_bGameOver;			// 判断是否Game Over
	int					m_iScore;				// 战机得分

	MusicPlay			*m_pSound;				// 爆炸声
	MusicPlay			*m_pFireSound;			// 开火声音

	list<EnemyFigher*>	m_listEnemy;			// 
	list<Bullet*>		m_listFighterBullets;	// 战斗机子弹
	list<Bullet*>		m_listEnemyBullets;		// 敌人子弹
	list<Sprite*>		m_listAnimation;		// 动画列表
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -