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

📄 gamewnd.h

📁 俄罗斯方块的整套源代码
💻 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 + -