📄 ppgameview.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 + -