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

📄 macros.h

📁 一个完整的,网络游戏客户端框架. 运行平台: Windows 2000, Windows 98 开发工具: VC++6.0
💻 H
字号:
/*******************************************************************************
Macros.h
游戏中要使用的一些宏定义和一些数据结构,不包括Game Rule部分
================================================================================

本程序修改自GAMEHIGH(open source)[http://www.gamehigh.net]项目程序,在此表示感谢紫瑗、骑士、阿鬼等。


这一程序是自由软件,你可以遵照自由软件基金会出版的GNU 通用公共许可证条款来修改和
重新发布这一程序。或者用许可证的第二版,或者(根据你的选择)用任何更新的版本。

发布这一程序的目的是希望它有用,但没有任何担保。甚至没有适合特定目地的隐含的担保。
更详细的情况请参阅GNU通用公共许可证。

你应该已经和程序一起收到一份GNU通用公共许可证的副本。如果还没有,写信给:
The Free Software Foundation, Inc.,  675  Mass Ave,  Cambridge,  MA02139,  USA
或访问 http://www.gnu.org



文件版本:
    0.0.9
    Build 0207011
    Date  2002-07-11

修改历史:
    2002-4-28
		增加一个CTreeCtrl的ID
	2002-5-05
		加入新的数据结构
	2002-5-06
		加入新的数据结构
	2002-5-07
		加入新的数据结构
	2002-6-04
		加入一个新的宏
	2002-6-05
		加入一个新的宏
	2002-06-13
		加入一些新的宏
	2002-06-15
		加入一些新的宏
	2002-07-03
		定义大厅服务器树的ID
	2002-07-11
		加入一个新的消息
*******************************************************************************/

#ifndef _GAME_VAR
#define _GAME_VAR	(WM_USER + 0x0001)	//从WM_USER + 1开始,
										//到WM_USER + 2999都是程序中使用的变量范围

#define	_GAME_VAR_BEGIN			(WM_USER	+ 1)		//起始标志

#define	_GAME_HALL_TREE_ID		(WM_USER	+ 2)		//类CRoomListView中的m_RoomTree的ID定义

#define	_GAME_VAR_END			(WM_USER + 2999)		//起始标志

#define START_BUTTONID			(WM_USER + 9900)		//从WM_USER + 9900开始到 9999,是一些零散的窗口定义的ID

#define	GOGO_BUTTONID			(WM_USER + 9901)		//大军出征按钮的ID

#define	OPEN_BUTTONID			(WM_USER + 9902)		//打开文件按钮的ID

#define	SAVE_BUTTONID			(WM_USER + 9903)		//保存布阵图按钮的ID	

#define	SERVER_TREEID			(WM_USER + 9904)		//大厅中的服务器列表树的ID

#define	WM_TABLE_SITDOWN		(WM_USER + 9800)		//用户坐在了桌子上
														//wParam, 桌子的指针, CTable类
														//lParam, 方位:0, 左;1,上;2,右;3,下
#endif

//军棋的变量
#ifndef		_JQ_VAR				
#define		_JQ_VAR				1024

//安全删除指针
#define SAFE_DELETE(p)			{ if(NULL != p) { delete (p);     (p)=NULL; } }

//安全删除数组
#define SAFE_DELETE_ARRAY(p)	{ if(NULL != p) { delete[] (p);   (p)=NULL; } }

//安全释放对象
#define SAFE_RELEASE(p)			{ if(NULL != p) { (p)->Release(); (p)=NULL; } }

//检查窗口是否存在
#define	SAFE_CHECKWND(p)		if(NULL != p && ::IsWindow(p->GetSafeHwnd())) 

//检查窗口是否为非法窗口
#define	SAFE_CHECKFALSEWND(p)	if(NULL == p || !::IsWindow(p->GetSafeHwnd())) 

//检查指针
#define	SAFE_CHECKPOINTER(p)	if(NULL != p)

#define		JQ_POSWIDTH			19
#define		JQ_POSHEIGHT		19

#define		JQ_CHESSWIDTH		32
#define		JQ_CHESSHEIGHT		32

#endif

//游戏的结构
#ifndef _GAME_STRUCT
#define _GAME_STRUCT			1024

#define	MAX_TABCONTAIN			4
#define MAX_USERID_LENGTH		24
#define MAX_USERNAME_LENGTH		24
#define MAX_PASSWORD_LENGTH		24
#define CLUBID_LENGTH			24
#define CLUBRANK_LENGTH			24
#define DATETIME_LENGTH			24
#define	ROOM_NAME_LENGTH		24

#define MAX_TABLE				45
#define	MAX_ROOM				4096
	
typedef struct tag_UserInfo				//用户信息
{
	char userID[MAX_USERID_LENGTH];       // 用户ID
	char userName[MAX_USERNAME_LENGTH];   // 用户名称
	char password[MAX_PASSWORD_LENGTH];   // 用户口令
	bool isAdmin;                         // 是否为网管
	bool isDeny;                          // 是否禁用
	int  lastPlayGameID;                  // 最后玩的游戏种类ID
	char clubID[CLUBID_LENGTH];           // 俱乐部ID
	char clubRank[CLUBRANK_LENGTH];       // 俱乐部官衔
	long onlineTime;                      // 游戏在线总计时间
	char firstPlayTime[DATETIME_LENGTH];  // 第一次游戏时间
	char lastPlayTime[DATETIME_LENGTH];   // 最后一次游戏时间
	int  imageFace;                       // 头像图片索引
	char email[30];                       // email
	char address[100];                    // 地址
	char homepage[100];                   // 主页
	char resume[256];                     // 简介
	bool isValidate;                      // 是否申请过帐号保护
	char validateQ[30];                   // 申请帐号保护问题
	char validateA[30];                   // 申请帐号保护答案
	char validateID[30];                  // 申请帐号保护标识(例如身份证号码)
}GAMEHIGH_USERINFO, *LPGAMEHIGH_USERINFO;

enum    USERSTATUS						//状态定义
{
	STATUSNOTDEFINE	=0,	//未定义
	IDLESSE			=1,	//空闲	
	INGAMES			=2,	//进入了游戏,但游戏未开始
	PLAYING			=3,	//游戏进行中
	READY			=4,	//在一个桌子中,并已准备好
	NOTREADY		=5,	//坐在了一张桌子上,但未准备好
};

typedef struct tag_UserStatus	//描述一个用户的状态
{
	char			userID[MAX_USERID_LENGTH];			// 用户ID
	char			userName[MAX_USERNAME_LENGTH];		// 用户昵称,仅当UserID有效时,才有效
	USERSTATUS		status;								// 用户当前的状态,仅当UserID有效时,才有效
}GAMEHIGH_USERSTATUS, *LPGAMEHIGH_USERSTATUS;

typedef struct tag_Table					//一张桌子
{
	UINT				tableID;			//桌子ID,从0开始,最大不会超过MAX_TABLE	
	char				Initiator[MAX_USERID_LENGTH];	//创始人的UserID
	GAMEHIGH_USERSTATUS	userStatus[MAX_TABCONTAIN];		//	User的状态	
											//	Index含义:
											//	0:		左
											//	1:		上
											//	2:		右
											//	3:		下
}GAMEHIGH_TABLE, *LPGAMEHIGH_TABLE;	


typedef struct tag_Room					//房间
{
	UINT				uRoomID;					//房间ID,每一个Server中的房间ID总是从0开始
													//顺次增加
	char				RoomName[ROOM_NAME_LENGTH];	//房间的名称
}GAMEHIGH_ROOM, *LPGAMEHIGH_ROOM;

typedef struct tag_MyStatus				//我的状态
{
	LPGAMEHIGH_TABLE	lpMyTable;					//指向我现在所在桌子的指针
													//如果为NULL,则我为空闲状态
}GAMEHIGH_MYSTATUS, *LPGAMEHIGH_MYSTATUS;
#endif

⌨️ 快捷键说明

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