📄 gamewnd.h
字号:
#ifndef _GAMEWND_H_
#define _GAMEWND_H_
#include "CommonDef.h"
#ifdef ENABLE_MUSIC
#include "AEEMedia.h"
#endif
typedef struct _RussDmdApp RussDmdApp;
typedef struct _GameWnd GameWnd;
// ----------------------------------------------------------------------
// 类型定义
// ----------------------------------------------------------------------
typedef enum _EGameState
{
eGameState_GAME = 0, // 游戏中
eGameState_PAUSE, // 暂停
eGameState_END, // 结束
eGameState_NUM
} EGameState;
typedef enum _EBlockType
{
eBlockType_LINE = 0, // 竖条
eBlockType_SQUARE, // 正方
eBlockType_L, // L
eBlockType_MIRRORL, // 反L
eBlockType_Z, // Z
eBlockType_MIRRORZ, // 反Z
eBlockType_T, // T
eBlockType_NUM
} EBlockType;
typedef enum _EDir
{
eDir_UP = 0,
eDir_RIGHT,
eDir_DOWN,
eDir_LEFT,
eDir_NUM
} EDir;
typedef struct _SBlock
{
EBlockType type;
EDir dir;
int8 x;
int8 y;
int16 color;
} SBlock;
typedef struct _SPoint
{
int8 x;
int8 y;
} SPoint;
struct _GameWnd
{
RussDmdApp* pMe;
IImage * m_pimgGameBGLeft;
IImage * m_pimgGameBGRight;
IImage * m_pimgGirl;
IImage * m_pimgGameIn;
#ifdef COLOR_BLOCK
IBitmap * m_pbmpBlock;
#endif
AEEImageInfo m_pi;
boolean m_bIsDemo;
EGameState m_eGameState;
AECHAR * m_pszText; // 本状态下用到的文字
byte * m_pRandomBuf; // 随机数缓存
uint16 m_nRandomIndex; // 随机数索引
AEERect m_rectBorder;
AEERect m_rectStatus;
uint8 m_nPauseIndex; // 暂停状态下的菜单索引,有返回游戏,退出两个选项
uint8 m_nContainerWidth;
uint8 m_nContainerHeight;
//uint8 m_nContainerTop; // 容器顶高度,使得容器居于屏幕中间(纵向)
//uint8 m_nContainerLeft; // 容器左边距
int8 m_nAdjX[eBlockType_NUM][eDir_NUM]; // 下一个block的显示偏移
int8 m_nAdjY[eBlockType_NUM][eDir_NUM];
// 游戏数据
uint8 m_nLevel; // 下落速度,含义是经过m_nSpeed帧后降低一格(m_nSpeed=20-2*level)
uint8 m_nFrameTick;
#ifdef ENABLE_MUSIC
boolean m_bMusicOn;
boolean m_bMute;
IMedia* m_pBgSound;
AEEMediaData m_BgSndData;
#endif
uint32 m_nScore;
boolean m_bAccelerate; // 加速下落
uint8* m_pContainerData; // 容器数据,是一个一维数组,0表示空,1表示被占据
SPoint* m_pBlockDefine; // 块形状定义
SBlock m_curBlock; // 当前正在下落的方块
SBlock m_nextBlock; // 下一个方块
AEERect m_rcBlock; // 每个小方块,防止反复申请
};
boolean GameWnd_New(GameWnd *pthis, RussDmdApp* pMe);
boolean GameWnd_Open(GameWnd *pthis);
void GameWnd_Close(GameWnd *pthis);
boolean GameWnd_HandleEvent(GameWnd* pthis, AEEEvent eCode, uint16 wParam, uint32 dwParam);
void GameWnd_Free(GameWnd* pthis);
#ifdef ENABLE_MUSIC
void GameWnd_CreateMusic(GameWnd *pthis);
void GameWnd_PlayMusic(GameWnd *pthis);
void GameWnd_ReleaseMusic(GameWnd *pthis);
void GameWnd_CloseMusic(GameWnd *pthis);
void GameWnd_PlaySoundCB(GameWnd* pthis, AEEMediaCmdNotify* pMedia);
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -