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

📄 ppdefine.h

📁 一个点泡泡游戏
💻 H
字号:
// PPDefine.h

#include "AEEModGen.h"          // Module interface definitions
#include "AEEAppGen.h"          // Applet interface definitions
#include "AEEShell.h"           // Shell interface definitions
#include "AEEFile.h"			// File interface definitions
#include "AEESound.h"			// Sound Interface definitions
#include "AEESoundPlayer.h"
#include "AEEHeap.h"
#include "AEEBitmap.h"
#include "AEESprite.h"
#include "AEEGraphics.h"

#include "pp.bid"

#include "pp_res.h"

/*************************************** 宏定义 ************************************/

// 开始检验
#define BEGIN_CHECK \
    boolean bCHECK_HAS_ERROR = false; \
do
// 检验错误捕捉
#define CATCH_CHECK \
    while(0); \
MyEndCheck: \
if (bCHECK_HAS_ERROR)
// 结束检验
#define END_CHECK
// 进行错误处理
#define PROCESS_ERROR   \
    do{ \
	DBGPRINTF("My Error ------------ "); \
	bCHECK_HAS_ERROR = true; goto MyEndCheck; \
    }while(0)

// 将表达式的值赋给p,并检验p是否为空
#define CHECK_NULL(p, exp)  do{ p = exp; if (p == NULL) PROCESS_ERROR; }while(0)
// 检查是否不成功
#define CHECK_NOT_SUCCESS(exp, success_code)    if (exp != success_code) PROCESS_ERROR
// 检验expression是否不等于SUCCESS
#define CHECK_ERROR(exp) CHECK_NOT_SUCCESS(exp, SUCCESS)
// 检验是否是假
#define CHECK_FALSE(exp) if (!exp) PROCESS_ERROR

// 使用制定方法清空指针,并将指针置空
#define _RELEASE(p, method) \
    if (p) \
    { \
	method; \
	p = NULL; \
    }
// 清空接口指针
#define IRELEASE(p, type)   _RELEASE(p, I##type##_Release(p))
// 清空自定义类型,带有Release()方法的指针
#define CUSTOM_RELEASE(p)   _RELEASE(p, p->Release())

/***********************************************************************************/



// 视图定义
#define ID_VIEW_START			1	// 起始
#define ID_VIEW_MENU			2	// 主菜单
#define ID_VIEW_GAME			3	// 游戏
#define ID_VIEW_HELP			4	// 帮助
#define ID_VIEW_SET				5	// 设置
#define ID_VIEW_ABOUT			6	// 关于
#define	ID_VIEW_STOP			7	// 结束

#define AVLID_KEY_PRESS_NUM		0	// 无效按键次数
#define ALL_MAIN_MENU_COUNT		6	// 主菜单总数
#define ALL_SET_MENU_COUNT		2	// 设置菜单总数
#define ALL_GAME_MENU_COUNT		3	// 游戏菜单总数
#define NO_KEY_PRESS_COUNT		200	// 未按键次数
#define MENU_TEXT_NUM			20	// 菜单文字个数
#define SCREEN_PROPERTY_WIDTH	128	// 屏幕长属性
#define SCREEN_PROPERTY_HIGTH	144	// 屏幕高属性

#define TIME_VIEW				50	// 设置开始视图的图片切换定时器是1s, 但是50ms是判断有没有键按下
#define TIME_GAME_VIEW			50	// 游戏定时器,20ms

#define KEY_PRESS_RESPOND		250	// 按键灵敏度,250ms

//#define DEFAUL_RES_FILE			"PP.bar"// 资源文件名
#define SCORE_FILE_NAME			"list.dat"	// 排行榜文件
#define SOUND_CFG_FILE			"SoundCfg.dat"// 声音配置文件

#define DIAMOND_ROW				10	// 定义当前最多六行钻石
#define DIAMOND_COL				9	// 定义当前最多五列钻石
#define DIAMOND_PARAM			3	// 定义当前钻石的属性

#define GAME_LINE_PARAM			2	// 游戏钻石行属性,表示还剩几行钻石过关

// 各位图索引
// 起始视图
#define			EMONTERNET_INDEX			0	// 移动标志BMP位图索引
#define			EBOX_INDEX					1	// 盒子BMP位图索引
#define			ESTART_INDEX				2	// 开始BMP位图索引

// 菜单视图
#define			EMAINMENUBACK1_INDEX		0	// 主菜单背景1BMP位图索引
#define			EMAINMENUBACK2_INDEX		1	// 主菜单背景2BMP位图索引
#define			EMENUTEXT_INDEX				2	// 主菜单BMP位图索引
#define			IDB_FANGKUAI_INDEX			3	// 方块BMP位图索引

// 关于、帮助
#define			IDB_BACKGROUND_INDEX		0	// 背景BMP位图索引
#define			IDB_ABOUT_INDEX				1	// 关于BMP位图索引
#define			IDB_HELP_INDEX				1	// 帮助BMP位图索引

// 演示、游戏
#define			IDB_GAMEBACK_INDEX			0	// 游戏背景BMP位图索引
#define			IDB_DIAMOND_INDEX			1	// 钻石BMP位图索引
#define			IDB_BROW_INDEX				2	// 人物表情位图索引
#define			IDB_SELECT_INDEX			3	// 选择BMP位图索引
#define			IDB_BLAST_INDEX				4	// 爆炸BMP位图索引
#define			IDB_DATA_INDEX				5	// 数字、字母

// 游戏菜单
#define			IDB_GAMEMENUTEXT_INDEX		0	// 游戏菜单
#define			IDB_GAMEMENUBACK_INDEX		1	// 游戏菜单背景

//#define IDB_BACKGROUND_INDEX	1 // 背景BMP位图索引
//#define IDB_BROW_INDEX			4 // 表情BMP位图索引

//#define IDB_GAMEMENU_INDEX		8 // 游戏菜单BMP位图索引
//#define IDB_LOGO_INDEX			10// 标志BMP位图索引
//#define IDB_POINT_INDEX			15// 点BMP位图索引


enum EKEYCODE
{
	EKEY_UP			=	0,	// 上方向键
	EKEY_DOWN		=	1,	// 下方向键
	EKEY_LEFT		=	2,	// 左方向键
	EKEY_RIGHT		=	3,	// 右方向键
	EKEY_SELECT		=	4,	// 确定
	EKEY_LEFTSOFT	=	5,	// 左软键
	EKEY_RIGHTSOFT	=	6	// 右软键
};

// 主菜单
enum MAINMENU
{
	EMENU_START		= 1,	// 开始
	EMENU_DEMO,				// 演示
	EMENU_SET,				// 设置
	EMENU_HELP,				// 帮助
	EMENU_ABOUT,			// 关于
	EMENU_STOP				// 结束
};

// 主菜单文字
enum MENUTEXT
{
	START_NORMAL			= 0,	// 开始普通
	START_LIGHT,					// 开始高亮
	DEMO_NORMAL,					// 演示普通
	DEMO_LIGHT,						// 演示高亮
	SET_NORMAL,						// 设置普通
	SET_LIGHT,						// 设置高亮
	HELP_NORMAL,					// 帮助普通
	HELP_LIGHT,						// 帮助高亮
	ABOUT_NORMAL,					// 关于普通
	ABOUT_LIGHT,					// 关于高亮
	EXIT_NORMAL,					// 退出普通
	EXIT_LIGHT						// 退出高亮
};

// 设置视图的菜单
enum SETVIEWMENU
{
	EMENU_OPEN_SOUND		= 1,	// 声音开
	EMENU_CLOSE_SOUND				// 声音关
};

enum SETVIEWMENUTEXT
{
	OPEN_SOUND_NORMAL		= 12,	// 声音开普通
	OPEN_SOUND_LIGHT,				// 声音开高亮
	CLOSE_SOUND_NORMAL,				// 声音关普通
	CLOSE_SOUND_LIGHT				// 声音开高亮
};

// 游戏菜单
enum GAMEMENU
{
	EMENU_RETURN_GAME		= 1,	// 回到游戏
	EMENU_SOUND_OPEN		= 2,	// 声音开
	EMENU_SOUND_CLOSE		= 3,	// 声音关
	EMENU_RETURN_MENU		= 4		// 返回菜单
};

enum GAMEMENUTEXT
{
	RETURN_GAME_NORMAL		= 0,	// 回到游戏普通
	RETURN_GAME_LIGHT		= 1,	// 回到游戏高亮
	SOUND_OPEN_NORMAL		= 2,	// 声音开普通
	SOUND_OPEN_LIGHT		= 3,	// 声音开高亮
	SOUND_CLOSE_NORMAL		= 4,	// 声音关普通
	SOUND_CLOSE_LIGHT		= 5,	// 声音关高亮
	RETURN_MENU_NORMAL		= 6,	// 回到菜单普通
	RETURN_MENU_LIGHT		= 7,	// 回到菜单高亮
};

// 绘图对齐方式
enum DFUN_DRAW_ALIGN
{
    EDD_ALIGN_NONE          = 0x00000000,

	// 水平对齐 --  (mutually exclusive within this group) 
	EDD_ALIGN_LEFT          = 0x00000010,
	EDD_ALIGN_CENTER        = 0x00000020,
	EDD_ALIGN_RIGHT         = 0x00000040,
	EDD_ALIGN_FILL          = 0x00000080,
	EDD_ALIGNHORZ_MASK      = 0x000000F0,     // 水平对齐掩码
        
	// 垂直对齐 -- (mutually exclusive within this group) 
	EDD_ALIGN_TOP           = 0x00000100,
	EDD_ALIGN_MIDDLE        = 0x00000200,
	EDD_ALIGN_BOTTOM        = 0x00000400,
	EDD_ALIGN_SPREAD        = 0x00000800,
	EDD_ALIGNVERT_MASK      = 0x00000F00,    // 垂直对齐掩码

	EDD_ALIGN_MASK          = (EDD_ALIGNHORZ_MASK|EDD_ALIGNVERT_MASK)
};

// 排行榜数据
typedef struct _SGameScore
{
	int nScore;
	int nLevel;
}GAMESCORE;

// 声音配置文件
typedef struct _SSoundCfg
{
	bool bOpenSound;
}SOUNDCFG;

// 当前选择框所在坐标,横向5个,纵向6个(从屏幕(0,17)开始 )
typedef struct _SSelectPoint
{
	int16 ptx;// x坐标(存放数组位0~5)
	int16 pty;// y坐标(存放数组位0~4)
	int16 ptOldScreenX;// 原x屏幕坐标,0~105,每隔14是一个
	int16 ptOldScreenY;// 原y屏幕坐标,0~126,每隔14是一个
	int16 ptNewScreenX;// 新x屏幕坐标,0~105,每隔14是一个
	int16 ptNewScreenY;// 新y屏幕坐标,0~126,每隔14是一个
}SELECTPOINT;

⌨️ 快捷键说明

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