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

📄 ppgameview.h

📁 一个点泡泡游戏
💻 H
字号:
// PPGameView.h: interface for the CPPDemoView class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_PPGAMEVIEW_H__DB0F8F87_DC5D_4155_AFB2_830758853687__INCLUDED_)
#define AFX_PPGAMEVIEW_H__DB0F8F87_DC5D_4155_AFB2_830758853687__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "PPBaseView.h"
#include "PPBitmap.h"
#include "AEEMedia.h"

enum ESOUNTTYPE
{
	OTHER_STATUS	=	0,	// 其他状态
	NORMAL_BLAST,			// 普通爆炸
	BOMB_BLAST,				// 炸弹爆炸
	NEXT_LEVEL,				// 下一关
	GAME_OVER,				// 游戏结束
	STOP_SOUND				// 停止播放
};

class CPPGameView : public CPPBaseView  
{
public:
	CPPGameView();
	CPPGameView(CPPGameDoc* pDoc);
	virtual ~CPPGameView();
// 继承函数
public:
	virtual void OnResume();// 恢复
	virtual void OnSuspend();// 挂起
	virtual bool OnInitData();// 初始化开始视图
	virtual void OnStartView();
	virtual void OnTimer();
	virtual void OnSetTimer();
public:
	void SetPauseStatus(boolean bPause);// 设置当前游戏暂停状态
	boolean GetPauseStatus();// 得到当前游戏暂停状态
	// 用于钻石的透明色处理
	void Draw(IBitmap* pIDest, IBitmap* pISrc, int nDestX, int nDestY,
		int nWidth, int nHeight, int nSrcX, int nSrcY);

	void SetAllRedrawStatus(boolean bRedrawAll);
	void AddLevel();	// 增加级别
	int GetCurRemainLine();	// 取得当前钻石剩余行数
	void SetDiamondLine();	// 设置剩余钻石行数
	void SetTimeCount();// 设置定时器计数
	int GetTimeCount();// 获取定时器计数
	void GetCoordFromPoint(SELECTPOINT tSelectPoint);
	void ExitView(int nViewID);// 结束当前视图,清除数据
	bool SetTimer(int32 dwInterval, PFNNOTIFY pfnCallback);// 设置定时器
	void OnDraw();
	boolean LoadGameBmpRes();
	static void HandleTimer(void* pView);
// 钻石相关处理函数
public:
	int RandomData(unsigned int n1, unsigned int n2);	// 取随机数
	int GetXPosFromColDiamond(int nCol);// 根据钻石纵坐标得到屏幕横坐标
	int GetYPosFromRowDiamond(int nRow);// 根据钻石横坐标得到屏幕纵坐标
	int GetDiamondType(); // 随机获取钻石类型
	void InitDiamondData(boolean bDraw = true);
// 选择框处理函数
public:
	int GetSelectRowFromX(int nX);// 根据选择框屏幕X坐标得到行坐标
	int GetSelectColFromY(int nY);// 根据选择框屏幕Y坐标得到列坐标
	void SetSelectXPoint(int nX);// 设置选择框X坐标
	void SetSelectYPoint(int nY);// 设置选择框Y坐标
	int16 GetSelectXPoint();// 取得选择框X坐标
	int16 GetSelectYPoint();// 取得选择框Y坐标
	void SetSelectMoveSta(boolean bMove);// 设置选择框是否移动标志
	void InitDemoData();		// 初始化演示数据
// 定时器、位图数据
public:
	AEECallback     m_cbTimer;          // 定时器回调结构
	CPPBitmap* m_pBitmap[6];	// 位图对象
// 游戏菜单
public:
	void WtriteSoundCfg(bool bOpenSound);// 写声音配置文件
	void SetCurMenu(GAMEMENU eMenu);
	GAMEMENU GetMenuFromIndex(int nIndex);// 根据索引得到当前菜单
	GAMEMENU GetCurMenu();	// 取得当前菜单
	int m_nMenuWidth;		// 每项菜单的宽度
	int m_nMenuHeight;		// 每项菜单的高度
	int GetMenuIndex(GAMEMENU eCurMenu);// 得到当前菜单索引
	GAMEMENU m_eCurMenu;		// 当前菜单
	void DrawMenu(GAMEMENU eCurMenu);
	boolean LoadGameMenuBmpRes();
	CPPBitmap* m_pGameMenuBitmap[2];	// 游戏菜单位图对象
	void DrawGameMenu();
private:
	boolean m_bAllRedraw;// 表示当前是否全部重绘
	IBitmap* m_pbmDbd[4];// 临时存储位图缓冲内存, 1是背景缓冲,2是钻石缓冲,3是爆炸图缓冲, 4是数字与字母
	IBitmap* m_pScreen[4];// 建立屏幕位图,1是背景屏幕,2是钻石屏幕,3是爆炸图缓冲,4是数字与字母

	SELECTPOINT m_tSelectPoint;// 选择框所在的坐标,

	boolean m_bMoveSelect;

	boolean m_bPause;	// 是否暂停,显示游戏菜单
// 存放游戏数据
public:
	// 存放钻石的属性数据,前两个表示行和列,
	// 第三个表示钻石属性:0表示钻石类型(m_nDiamond[][][0]=1红,m_nDiamond[][][0]=2黄、
	// m_nDiamond[][][0]=3蓝、m_nDiamond[][][0]=4粉、m_nDiamond[][][0]=5红炸弹、
	// m_nDiamond[][][0]=6黄炸弹、m_nDiamond[][][0]=7蓝炸弹、m_nDiamond[][][0]=8粉炸弹、
	// m_nDiamond[][][0]=9黑色炸弹、m_nDiamond[][][0]=10爆炸效果),
	// 1表示当前图片,2表示当前钻石是否选定同一种的状态
	int m_nDiamond[DIAMOND_ROW][DIAMOND_COL][DIAMOND_PARAM];

	int m_nGameTimeCount;	// 游戏视图的定时器计数
	int m_nlevel;// 当前级别

	// 产生新钻石的数据,与 m_nDiamond[][][]相同,只是没有行属性
	int m_nNewLine[DIAMOND_COL][DIAMOND_PARAM];
	int m_nCurCol;	// 产生新钻石所致的当前列
	int m_nLines[GAME_LINE_PARAM];	// 游戏钻石行数,1:游戏初始钻石行数,2:还剩几行钻石

	int m_nCurSelectIndex;	// 当前选择框所用的位图索引

	int m_nBrowIndex;	// 表情,普通是2,爆炸是3
public:
	// 资源释放
	void FreeResourse();
// 演示数据
public:
	void OpenGameSound();
	void CloseGameSound();
	void OnDrawDemo();
	int m_nDemoDiamondType[64];// 演示初始钻石数据
	EKEYCODE m_nDemoKeyPress[37];// 演示按键

//	ISoundPlayer* m_pISoundPlayer1;
//	ISoundPlayer* m_pISoundPlayer2;
	IMedia* m_pIMedia1;
	IMedia* m_pIMedia2;

	void PlaySound(ESOUNTTYPE eSoundStatus);
    void SetSoundStatus(ESOUNTTYPE eSoundStatus);
	void SetVolume(int nVolume);
    ESOUNTTYPE GetSoundStatus();
	ESOUNTTYPE m_eSoundStatus;
//	AEESoundToneData m_tToneData;
	AEESoundPlayerInfo m_SoundInfo;
	void StopSound();

	void GetVolune(uint32 dwParam);
	void RegisterSound(bool bPlay);
// 声音文件操作
public:
    IFileMgr* m_pIFileMgr;	// 应用文件接口
    IFile* m_pIFile;		// 文件操作借口
    char* m_pSoundBuffer1;
    char* m_pSoundBuffer2;
};

#endif // !defined(AFX_PPGAMEVIEW_H__DB0F8F87_DC5D_4155_AFB2_830758853687__INCLUDED_)

⌨️ 快捷键说明

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