📄 twoflag.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 + -