chinesechessdlg.h

来自「用c++ 开发的中国象棋」· C头文件 代码 · 共 182 行

H
182
字号
// ChineseChessDlg.h : header file
//

#if !defined(AFX_CHINESECHESSDLG_H__A129C33C_9460_4E90_A2B1_8ED08DC4E1E0__INCLUDED_)
#define AFX_CHINESECHESSDLG_H__A129C33C_9460_4E90_A2B1_8ED08DC4E1E0__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "NetSetDlg.h"
#include "InitSet.h"
#include "MoveGenerator.h"
#include "Evaluation.h"
#include <stack>
#include "ServerSock.h"
#include "ClientSock.h"
#include "Search.h"
#include "AlphaBetaSearch1.h"
#include "MyCoolMenu.h"
#include "CpuUsgesCtl.h"
#include "MemUsgesCtl.h"
#include "PlayerList.h"
using namespace std;


/////////////////////////////////////////////////////////////////////////////
// CChineseChessDlg dialog

class CChineseChessDlg : public CDialog//,public CSocket
{
protected:
	void DrawStar(CDC* dc,int x,int y);
public:
    //判断本棋是否下完,红方赢返回-1,黑方赢返回1
	int IsGameOver(BYTE position[][9]);
    //人机对弈电脑思考过程 
	void Think();
    //处理ACCEPT事件
	void ProcessPendingAccept();
	//得到本机IP地址
	void GetLocalIP();
	//新来一局
     void OnNewGame();
	 //画棋盘
	 void DrawChessBoard(CDC* dc);
// Construction
public:
	CChineseChessDlg(CWnd* pParent = NULL);	// standard constructor
	virtual ~CChineseChessDlg();
// Dialog Data
	//{{AFX_DATA(CChineseChessDlg)
	enum { IDD = IDD_CHINESECHESS_DIALOG };
	CMyButton	m_BtnNewGame;
	CMyButton	m_BtnSend;
	CMyButton	m_BtnUnDo;
	CMyButton	m_BtnReDo;
	CMyButton	m_BtnGiveUp;
	CProgressCtrl	m_Think;
	CStatic	m_RedName;
	CStatic	m_BlackName;
	CEdit	m_EditSendMsg;
	CListBox	m_MsgList;
	CEdit	m_EditOutputInfo;
	CEdit	m_EditMsg;
	CListBox	m_ListMsg;
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CChineseChessDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL
public:
	CInitSet setdlg; //初始化设置
	bool IsNetBattle;//网络队战
	BOOL m_IsComputer;
	COLORREF m_ChessBoardColor;
	
	CImageList m_ImageList;//用于绘制棋子的对象
	BYTE m_byChessBoard[10][9];      //棋盘数组,用于显示棋盘
	BYTE m_byBackupChessBoard[10][9];//备份棋盘数组,用于出错恢复
	BYTE m_byShowChessBoard[10][9];  //用于显示的棋盘

	MovingChess m_MoveChess;		  //用于保存当前被拖拽的棋子的结构
	POINT m_ptMoveChess;		     //用于保存当前被拖拽的棋子的位置
	int m_nUserChessColor;           //保存用户棋子的颜色(或网络队战史黑方的棋子)
	int m_iWhoChess;                    //现在该谁走棋了
	CSearch* m_pSE;                 //搜索引擎指针
	CEvaluation* m_pEval;            //用于估值
	int m_iBout;				   //已下的回合数
    BOOL m_bIsGameOver;            //是否结束了
	BOOL m_bIsBegin;                    //是否开始走棋了
	CServerSock	m_ListenSocket;    //用于监听
	CClientSock	m_ClientSocket;    //用于连接
	CClientSock m_ConnectSocket; //用于进入游戏大厅
	BOOL			m_bIsClient;   //是客户端还是服务器
	BOOL			m_bIsInit;     //初始化成功否
	BOOL			m_bIsInitToServer;
	int				m_port;        //端口号
	CString			m_ip;           //IP
	BYTE			m_bIP[4];
	CString			m_sLocalName;   //本机名字
	CString			m_ServIP;
	CString			m_GameSerIP;
	UINT			m_GameSerPort;
	ChessMove m_cmBestMove;        //最佳走法
	UnDoMove m_umUndoMove;         //悔棋走法
	HBITMAP m_hBitmap;             //绘制背景图片

	HANDLE m_hHandle;              //电脑思考句柄
	DWORD m_dwThreadID;             //电脑思考线程ID
    BOOL m_bIsThinking; 
	BOOL m_bShow;					//用于窗口的显示与隐藏

	HICON m_hIcon;
	CMoveGenerator* m_pMG;//走法产生
	stack<UnDoMove> m_stackUndoMove;//记录走法的栈,便于悔棋
	stack<UnDoMove> m_stackRedoMove;//记录已悔棋的走法的栈,便于还原
	int m_BkSound;
	CMyCoolMenu m_Menu;
	CMyCoolMenu m_RMenu;
	CCpuUsgesCtl m_MyCpuCtrl;

	
	// Generated message map functions
	//{{AFX_MSG(CChineseChessDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
	afx_msg void OnMouseMove(UINT nFlags, CPoint point);
	afx_msg void OnBtnSend();
	afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
	afx_msg void OnSetExit();
	afx_msg void OnSetGametype();
	afx_msg void OnChangeEditMsg();
	afx_msg void OnNetCreate();
	afx_msg void OnNetJoin();
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
	afx_msg void OnBtnGiveup();
	afx_msg void OnBtnReundo();
	afx_msg void OnBtnUndo();
	afx_msg void OnOpen();
	afx_msg void OnSave();
	afx_msg void OnBkg();
	afx_msg void OnDiff0();
	afx_msg void OnDiff1();
	afx_msg void OnDiff2();
	afx_msg void OnDiff3();
	afx_msg void OnDiff4();
	afx_msg void OnHelpAuthor();
	afx_msg void OnHelpCchessnet();
	afx_msg void OnHelpCumt();
	afx_msg void OnHelpLearn();
	afx_msg void OnSetBksound();
	afx_msg void OnChessChessBoardColor();
	afx_msg void OnHelpChesechess();
	afx_msg void OnSetReset();
	afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);
	afx_msg void OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct);
	afx_msg void OnInitMenu(CMenu* pMenu);
	afx_msg void OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu);
	afx_msg void OnTuoPan(WPARAM wParam,LPARAM lParam);
	afx_msg void OnClose();
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnCpuandmem();
	afx_msg void OnShow();
	afx_msg void OnHide();
	afx_msg void OnExit();
	afx_msg void OnLinkServer1();
	//}}AFX_MSG
	
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_CHINESECHESSDLG_H__A129C33C_9460_4E90_A2B1_8ED08DC4E1E0__INCLUDED_)

⌨️ 快捷键说明

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