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

📄 brewgame.h

📁 象棋框架
💻 H
字号:
/*===========================================================================
FILE: BrewGame.h
===========================================================================*/

#ifndef BREWGAME_H
#define BREWGAME_H

//*****************************************************************************
// INCLUDE FILES
//*****************************************************************************
#include "AEEShell.h"           // Shell interface definitions
#include "AEEStdLib.h"

#include "BrewGameCanvas.h"

#include "Itf_BrewGameFrame.h"
#include "Itf_BrewGame.h"
#include "global.h"

//*****************************************************************************
// DEFINITIONS
//*****************************************************************************
#define GAME_INIT             0
#define GIRDSIZE             11
#define MENUHEIGHT           70
#define MENUWIDTH            60
#define MAINMENUHEIGHT       34
#define BGWIDTH             108
#define BGHEIGHT            120
#define MFC_KINDLIST_REQ 0xB001
#define MFC_KINDLIST_IND 0xB002
#define MFC_MLIST_REQ    0xB003
#define MFC_MLIST_IND    0xB004 
#define MFC_M_REQ        0xB005
#define MFC_M_IND        0xB006 
#define MFC_TIME_IND     0xB008
#define MFC_ROUNDEND_IND 0xB00C
#define MFC_GIVEUP_REQ   0xB00E
#define MFC_CLAIM_REQ    0xB00F
#define MFC_CLAIM_IND    0xB010
#define MFC_ACTION_REQ   0xB011
#define MFC_ACTION_IND   0xB012
#define RED                   0
#define BLACK                 1
#define MKND_CHESS       0x100C
#define MAXBUFLEN        680
#define MAXBUFSIZE       2048
#define  GAME_STATE_NONE  130
#define  GAME_STATE_SELSTART 131
#define  GAME_STATE_WAIT 132
#define  GAME_STATE_PLAY 133
#define  GAME_STATE_ROUNDOVER 134
#define  GAME_STATE_NEXTROUND 135
#define  GAME_STATE_MAINMENU 136
#define  GAME_STATE_CHAT 137
#define  GAME_STATE_CHANGE 138
#define  GAME_STATE_GIVEUP 139
#define  GAME_STATE_REGRET 140
#define  GAME_STATE_COMPROMISE 141
#define  GAME_STATE_MENU 142
#define  GAME_STATE_HELP 143
#define  GAME_STATE_PLAYERINFO 144
#define  GAME_STATE_QUITGAME 145
#define  GAME_STATE_EXITGAME 146

//*****************************************************************************
// ENUMERATED TYPE DEFINITIONS
//*****************************************************************************

//*****************************************************************************
// GLOBAL APPLICATION DATA STRUCTURES
//*****************************************************************************

#include "AEEMenu.h"
#include "gamevv_res.h"
#include "Package.h"
#include "UserInfoDlg.h"
class CBrewHelpAndIntro;
/*typedef enum
{
  GAME_STATE_NONE,
  GAME_STATE_SELSTART,//选择是否开始
  GAME_STATE_WAIT,
  GAME_STATE_PLAY,//对手开始
  GAME_STATE_ROUNDOVER,
  GAME_STATE_NEXTROUND,
  GAME_STATE_MAINMENU,
  GAME_STATE_CHAT,
  GAME_STATE_CHANGE,
  GAME_STATE_GIVEUP,
  GAME_STATE_REGRET,
  GAME_STATE_COMPROMISE,
  GAME_STATE_MENU,
  GAME_STATE_HELP,
  GAME_STATE_PLAYERINFO,
  GAME_STATE_QUITGAME,
  GAME_STATE_EXITGAME
} EGameState;//游戏状态
*/
typedef enum {
	ENONE,
	EUP,
	EDOWN,
	ELEFT,
	ERIGHT	
}MOVEDIRECTION;

typedef struct _CHESSBOARD{
	AEERect m_rectBackGround;
	AEERect m_rectWrap;
	AEERect m_rectIn;
	AEERect m_rectMiddle;
	AEEPoint m_joinPt[90];
	int     m_nChessBoardSize;
}ChessBoard;

typedef struct _CHESSMAP{
	INT32    m_nID;	
	INT8     m_cType;	
	INT8     m_cTurn;
	INT8     m_cWiner;
	INT8     m_cLevel;
	INT8     m_cScoreRule[3];		
}ChessMap;
typedef struct _CHESSSTATEIND{
	INT8     m_stateID[2];//局况ID
	INT8     m_turn;//走棋方和座位id
	INT8     m_redUseTime[2];
	INT8     m_blackUseTime[2];
	INT16    m_turnClock;
	INT8     m_ChessState;//局况
	INT8     m_ChessGo[4];	
}ChessState;

typedef struct _ROUNDOVER{
	UINT32     m_RedMoneyChange;
	UINT32     m_RedPointChange;
	UINT32     m_BlackMoneyChange;
	UINT32     m_BlackPointChange;
	INT8      m_result;
}RoundOver;

class CBrewGame:public IBrewGame{
  public:
    CBrewGame();
    virtual ~CBrewGame();

  public:
    AEEDeviceInfo *m_pIDi;
	IShell *m_pIShell;
	IBrewGameFrame *frame;

	boolean m_nGameRunFlag;
//	AECHAR szText[64 + 1];
	struct UserItemStruct *m_pUList;
	UINT16 m_nUCount;

  private:
	IBrewCanvas *m_pIGameCanvas;
	UINT16 m_nCurrentGameId;
	UINT16 m_nCurrentTableId;
	UINT16 m_nCurrentSeatId;

  private:
	void freeData();
	void clearUserList();

  public:
    void setGameFrame(IBrewGameFrame *f);
    UINT16 getCurrentGameId();
    void onSitDown(UINT8 tableId, UINT8 seatId, UINT8 action, UINT8 retCode);
    void onUserInfo(UINT8 ret, UINT16 num, struct UserItemStruct *uItem);
    void onInviteUser(UINT16 num, struct InviteItemStruct *inviteItem);
	void onChat(UINT16 num, struct ChatItemStruct *chatItem);
    void onDisconnectGameServer(UINT8 retCode);
	void onStart();
	void onStop();
	void onSuspend();
	void onResume();
	void onPlay();
	void onPackage(IMessageReader *mReader);
	void onEvent(AEEEvent eCode, UINT16 wParam, UINT32 dwParam);
    void Release();
	void onYouBack(UINT8 roomId, UINT8 tableId, UINT8 seatId);
	private:
		void ShowIntroduce();
		void ProcessSelStart();
		void ShowResult(IShell *pIShell);
		void setProHead(UINT16 gameID,UINT16 msgID,INT8 ver,INT8 crypt);
		AECHAR* getShowText(UINT16 state,AECHAR * pszMsg,INT8 help);
		void ProcessReConnect();
		void ProcessUserInfo(UserInfoStruct* userInfo);
		void DispatchChatMsg(UINT16 wParam);
		void ProcessChat();
		void ProcessHelp();
	void ProcessGoResult();
	void ProcessChange();
	void ProcessRegret();
	void ProcessMFC_CLAIM_REQmsg(IMessageReader *mReader);
	void ProcessMFC_ACTION_INDmsg(IMessageReader*  mReader);
	void ProcessMFC_CLAIM_INDmsg(IMessageReader* mReader);
	void ProcessMFC_ROUNDEND_INDmsg(IMessageReader* mReader);
	void ProcessMFC_TIME_INDmsg(IMessageReader *mReader);
	void ProcessMFC_M_INDmsg(IMessageReader *mReader);
	void SetOrigin(INT8 clr);
	boolean CheckMove(INT8 colorside,INT8 seledchess,AEEPoint start,AEEPoint end);
	boolean         InitData();
	
	void freeMyData();
	UINT16 ABSDIFF(UINT16 a, UINT16 b);
	
public:	
	boolean m_bGameStart;
	void sendProBuf(UINT16 gameID, UINT16 msgID, INT8 ver, INT8 crypt,INT8* buffer,int msgNum);
	void sendProINT8(UINT16 gameID, UINT16 msgID, INT8 ver, INT8 crypt,INT8* buffer,int msgNum);
	void ProcessMyDecide(UINT16 state,UINT16 wParam,UINT32 dwParam);
	void showMsg(UINT16 state,INT8 help, UINT8 sno, UINT32 color, UINT32 time, UINT32 mode);
	boolean m_bNextRound;
	boolean m_bShowClock;
	void    gameReset();
	void    CheckPos();
	boolean CheckWhoTurn();
	IMessageWriter *m_pIMWriter;
	UINT16 m_nGameState;
	UINT16 m_nPreGameState;

//	EGameState      m_nGameState;
//	EGameState      m_ePreGameState;//前一次的状态值

	IMenuCtl*       m_pMainMenuCtl;
	AEERect         m_rRect;
	boolean         m_bShowMenuOnly;

	IMenuCtl*       m_pMenu;
	AEERect         m_rMenuRect;

	ChessBoard*     m_pBoard;
	IBitmap*        m_pImage;
	IBitmap*        m_pRiver;
	int             m_nPicW,m_nPicH;

	INT8            m_cMycolor;	//我的颜色
	INT8            m_cOldColor;
	IBitmap*	    m_pChess;//最多有32个棋子
	INT8            m_cChessVal[9][10];	
	INT8            m_cSelectedChess;//用来显示选中的棋子
	INT8            m_cEndChess;//目的地的棋子
	AEEPoint        m_SelChessPos;//用来显示选中的棋子的位置
	AEEPoint        m_EndPos;
	boolean         m_bChessSelected;//是否有棋子被选中
	IBitmap*        m_pHand;
	unsigned long   m_handcx,m_handcy;
	AEEPoint        m_HandPos;//用来指示手的位置
	boolean         m_bShowRect;
	boolean         m_bShowOppRect;
	INT8            m_cOppMovedChess;//用来显示对家移动的棋子
	AEEPoint        m_OppEndPos;
	boolean         m_bMyturn;
	MOVEDIRECTION   m_eMove;
	INT16           m_setupCnt;//总共走过的步数
	boolean         m_bChessCanMove;
	
	ChessMap        m_pChessMap;	
	ChessState      m_sChessState;
	RoundOver       m_sRoundOver;
	AECHAR          m_psTypeName[16+1];
	AECHAR          m_psIDName[16+1];
	INT8            m_psLayout[96];
	INT8            m_ChessMapField[96];
	INT8*           m_pLastLayout;
	UserInfoStruct  m_MyInfo;
	UserInfoStruct  m_OppInfo;
	CUserInfoDlg*   m_pDlg;
	CBrewHelpAndIntro* m_pHelp;
	boolean         m_bMsgResponse;//用于指示(悔棋,交换等)消息反馈
	INT8            m_pApplyResult[2];
	INT8            m_ApplyInd[2];
	boolean         m_bInitData;

	IBitmap*         m_pGeneral;
	unsigned long   cx,cy;
	boolean         m_bShowGeneral;
	AEEPoint        m_GeneralPos;
	UINT32          m_time;//显示用的当前时间
	UINT32          m_clock;

	boolean         m_bProcessedTIMEIND;

	IMenuCtl*       m_pChatMenu;
	boolean         m_bMainMenuCtl;
	boolean         m_bMainMenu;
	boolean         m_bChatMenu;
	boolean         m_bHelpView;
	boolean         m_bYouBack;
};

#endif

⌨️ 快捷键说明

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