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

📄 twoflag.h

📁 brew中个人开发的一个两国军棋游戏
💻 H
字号:

#ifndef _TWOFLAG_H_
#define _TWOFLAG_H_
/*===============================================================================
INCLUDES AND VARIABLE DEFINITIONS
=============================================================================== */
#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 "AEEDB.h"				// Database interface definitions
#include "AEENet.h"				// Socket interface definitions
#include "AEESound.h"			// Sound Interface definitions
#include "AEETapi.h"			// TAPI Interface definitions
#include "AEEGraphics.h"
#include "AEEBitmap.h"
#include "AEESprite.h" 
#include "AEEStdLib.h"
#include "twoflag.bid"
#include "twoflag_res.h"
#include "AEEText.h" 

//#define HOST_ADDR					"203.86.41.4"
#define HOST_ADDR					"127.0.0.1"
#define HOST_PORT					5554
#define ISDIGIT(c)					( (unsigned) ((c) - '0') < 10)
#define ISALPHA(c)					( (unsigned) ( ((c)|32) - 'a') < 26 )
#define ISALNUM(c)					( ISDIGIT(c) || ISALPHA(c) )
#define min(a,b)					((a) < (b) ? (a) : (b))
#define MAXLEN						200

#define SPLASH_TIMER_DURATION		1000	// Number of milliseconds the splash screen is displayed
#define OFFSET_X_CURSOR				16		//主菜单光标坐标偏移
#define OFFSET_Y_CURSOR				7		//

#define OFFSET_HEIGHT				25		//主菜单及联网菜单高度偏移

#define OFFSET_X_LOGIN				11		//登录菜单光标坐标偏移
#define OFFSET_Y_LOGIN				22
#define OFFSET_HEIGHT_LOGIN			52

#define OFFSET_X_HEAD				1		//头像菜单光标坐标偏移
#define OFFSET_Y_HEAD				34		//
#define OFFSET_WIDTH_HEAD			32		//头像菜单宽度偏移
#define OFFSET_HEIGHT_HEAD			32		//头像菜单高度偏移

#define OFFSET_X1_CURSOR			23		//联网菜单光标坐标偏移
#define OFFSET_Y1_CURSOR			35		//

#define OFFSET_X2_CURSOR			47		//大厅房间菜单光标坐标偏移
#define OFFSET_Y2_CURSOR			5		//
#define OFFSET_WIDTH_ROOM			39		//大厅房间菜单宽度偏移
#define OFFSET_HEIGHT_ROOM			32		//大厅房间菜单高度偏移

#define OFFSET_X3_CURSOR			1		//棋桌光标坐标偏移
#define OFFSET_Y3_CURSOR			34		//
#define OFFSET_X_TABLE				63		//棋桌宽度偏移
#define OFFSET_Y_TABLE				33		//棋桌高度偏移

#define OFFSET_X_TABLENUMBER		4		//棋桌号码文字x方向偏移
#define OFFSET_Y_TABLENUMBER		40		//棋桌号码文字y方向偏移

typedef enum
{
  APP_STATE_START,
  APP_STATE_MAIN_MENU,			//主菜单状态
  
  //主菜单下
//  APP_STATE_SINGLE_MODE,		//单机模式状态
  APP_STATE_NETWARE_MODE,		//联网模式状态
  APP_STATE_OPTION,				//选项状态
  APP_STATE_HELP,				//帮助状态
  APP_STATE_ABOUT,				//关于状态

  //登录状态
  APP_STATE_LOGIN,				//新用户登录
  APP_STATE_READ,				//选取老用户

  //
  APP_STATE_INPUTNAME,			//输入新用户名状态
  APP_STATE_SELECTHEAD,			//选择新用户头像状态
  
  //联网模式下
  APP_STATE_LAB,				//游戏大厅状态
  APP_STATE_RECORD,				//排行榜记录状态
  APP_STATE_RESTORE_NETWARE,	//联网模式下返回主菜单
  
  //选择房间状态
  APP_STATE_SELECTROOM,
  
  //房间内加入游戏状态
  APP_STATE_TABLE,				//选棋桌状态

  //下棋状态
  APP_STATE_LAYOUT,				//布棋状态
  APP_STATE_MOVECHESS			//对战状态
  
} EAppStateType;


//sprite
#define	SPRITE_SIZE	32
#define SPRITE_COUNT	24

//chessboard
#define CHESSBOARD_COL	4
#define CHESSBOARD_ROW	12
#define BG_OFFSET_X	14
#define BG_OFFSET_Y	12

//chessMan
#define	NOCHESS		0

//define white chess 定义白子
#define	W_SILING	1
#define W_JUNZHANG	2
#define	W_SHIZHANG	3
#define	W_LUZHANG	4
#define	W_TUANZHANG	5
#define	W_YINGZHANG	6
#define	W_LIANZHANG	7
#define	W_PAIZHANG	8
#define W_ZHADANG	9
#define	W_GONGBING	10
#define	W_DILEI		11
#define W_JUNQI		12
#define W_BEGIN		W_SILING
#define W_END		W_JUNQI

#define IsWhite(x)	( x >= W_BEGIN && x<= W_END )	 //判断一个棋子是不是白色


//定义一个棋子位置的结构
typedef struct _chessposition
{
	int	x;
	int	y;
}CHESSPOSITION;

//棋子属性
typedef struct _chessproperty
{
	int		Score;		//棋子的分值
	byte	x;			//定义光标在棋盘数组中的行号
	byte	y;			//定义光标在棋盘数组中的列号
	byte	ChessID;	//标明是什么棋子
}CHESSPROPERTY;

//网络状态
enum
{
	NETSTATE_WRITE = 0,
    NETSTATE_READ,
    NETSTATE_CONNECT,
    NETSTATE_OK,
};

typedef struct _CJunQi
{
	AEEApplet		a;
	EAppStateType   m_eAppState;            // 代表当前应用程序的状态
	
	ITAPI			*pITapi;
	ITextCtl		*pText;

	IFileMgr*		m_pIFM;
	IFile*			m_pf;

	ISprite*		pISprite;
	AEESpriteCmd	rgCmds[67];				//保存sprite的数组
	
//	uint16			nNormalFontHeight;		//字体高度
//	uint16			nBoldFontHeight;		
	
	uint16			cxScreen;				//屏幕尺寸
	uint16			cyScreen;

	int16			nTableCount;			//房间棋桌计数

	int16			nMenuRow;				//主菜单项行号
	int16			nMenuCol;				//主菜单项列号

//	IImage*         pCursor;				//指向程序标题图像
	IImage*			pIImage;

	char			m_PacketChar[MAXLEN];

//////////////////////////////////////////////////////////////////////////
	IBitmap*		bgBmp ;
	CHESSPOSITION	Chess_Array[13][5];		//用来保存棋盘交点的坐标值
	CHESSPROPERTY	My_Chess[13][5];		//用来保存棋子的属性的数组
	CHESSPROPERTY	Cursor;					//光标
	CHESSPROPERTY	From;					//选择棋子的起始点
	CHESSPROPERTY	To;						//选择棋子的终点
	boolean			layout;					//布局状态
	boolean			win[2];					//win[0] : player ;  win[1] : computer;
	byte			ChessData[13][5];		//保存布局状态时的棋子
	int8			n_Offset;				//滚屏时用到的偏移行数
	int8			nHeightPerRow;			//棋盘每行的高度(像素点)

///////////////////////////////////////////////////////
	char			m_MobileNumber[12];		//手机号码
	char			m_UserName[8];			//用户名
	int				m_HeadType;				//头像类型
	int				m_Grade;				//军衔
	int				m_TotalCent;			//总分
	int				m_TotalCount;			//总局数
	int				m_WinCount;				//胜利局数
	int				m_LossCount;			//失败局数

//////////////////////////////////////////////////////////////////////////
	int				nNetstate;
	INAddr			nodeINAddr;
	ISocket*		pISocket;
    INetMgr*		pINetMgr;

} CJunQi;

/*-------------------------------------------------------------------
Function Prototypes
-------------------------------------------------------------------*/
static boolean twoflag_HandleEvent(IApplet * pi, AEEEvent eCode, uint16 wParam, uint32 dwParam);
static boolean twoflag_InitAppData(CJunQi *pi);
static void twoflag_FreeAppData(CJunQi *pApp);
void ReleaseObj(void ** ppObj);

boolean onKeyEvent(CJunQi *pApp,AEEEvent eCode,uint16 wParam,uint32 dwParam);

void DisplaySplashScreen( CJunQi* pApp );

void DrawCursor(CJunQi* pApp, int x, int y, int16 width, int16 height, int16 nResID, int16 row, int16 col);
void ClrMenuRowCount(CJunQi* pApp);
boolean dispAnim(CJunQi* pApp,int16 idb,int cxF,int nF,int nR,int x,int y);
static void StopAnim(CJunQi* pApp);
void DisplayOutput(CJunQi* pApp, int nline, char *pszStr);
boolean GetMobileNumber(CJunQi* pApp);

static void InitMainMenu( CJunQi* pApp );
void DisplayMainMenu(CJunQi* pApp);
boolean MainMenuEvent(CJunQi *pApp,AEEEvent eCode, uint16 wParam,uint32 dwParam);

void InitLoginMenu(CJunQi* pApp);
void DisplayLoginMenu(CJunQi* pApp);
boolean MenuLoginEvent(CJunQi *pApp,AEEEvent eCode, uint16 wParam,uint32 dwParam);

void InitInputName(CJunQi* pApp);
void FinishInputName(CJunQi* pApp);
void DisplayInputNameUI(CJunQi* pApp);
boolean InputNameEvent(CJunQi *pApp,AEEEvent eCode, uint16 wParam,uint32 dwParam);

void InitSelectHeadMenu(CJunQi* pApp);
void DisplaySelectHeadMenu(CJunQi* pApp);
boolean MenuSelectHeadEvent(CJunQi *pApp,AEEEvent eCode, uint16 wParam,uint32 dwParam);

void InitMenuNetware( CJunQi* pApp );
void DisplayMenuNetware(CJunQi* pApp);
boolean MenuNetwareEvent(CJunQi *pApp,AEEEvent eCode, uint16 wParam,uint32 dwParam);

void InitMenuLab( CJunQi* pApp );
void DisplayMenuLab(CJunQi* pApp);
boolean MenuLabEvent(CJunQi *pApp,AEEEvent eCode, uint16 wParam,uint32 dwParam);

void InitMenuTable( CJunQi* pApp );
void DisplayMenuTable(CJunQi* pApp);
boolean MenuTableEvent(CJunQi *pApp,AEEEvent eCode, uint16 wParam,uint32 dwParam);


#endif

⌨️ 快捷键说明

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