www.pudn.com > 1223456.rar > ChessDlg.h


// ChessDlg.h : header file 
// 
 
#if !defined(AFX_CHESSDLG_H__C9065501_927E_437F_8700_63743E930B62__INCLUDED_) 
#define AFX_CHESSDLG_H__C9065501_927E_437F_8700_63743E930B62__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
#include "Define.h" 
#include "SearchEngine.h" 
#include "NegaMaxEngine.h" 
#include "AlphaBetaEngine.h" 
#include "SetDlg.h" 
#include "FAlphaBetaEngine.h" 
#include "AspirationSearch.h" 
#include "PVS_Engine.h" 
#include "AlphaBeta_TTEngine.h" 
#include "IDAlphaBetaEngine.h" 
#include "Alphabeta_HH.h" 
#include "MTD_fEngine.h" 
#include "CoolButton.h" 
#include "XPButton.h" 
#include "GradientProgressCtrl.h" 
#include "HelpDlg.h" 
#include  
 
typedef struct 
{ 
	BYTE nChessID; 
	POINT ptMovePoint; 
}MOVECHESS; 
 
typedef enum{Chessing,SetChessBoarding,Previewing}Status; 
///////////////////////////////////////////////////////////////////////////// 
// CChessDlg dialog 
 
using namespace std; 
 
class CChessDlg : public CDialog 
{ 
// Construction 
public: 
	CChessDlg(CWnd* pParent = NULL);	// standard constructor 
 
// Dialog Data 
	//{{AFX_DATA(CChessDlg) 
	enum { IDD = IDD_CHESS_DIALOG }; 
	CCoolButton	m_btnStop; 
	CCoolButton	m_btnUndo; 
	CCoolButton	m_btnRedo; 
	CCoolButton	m_btnComputer; 
	CListBox	m_lstChessRecord; 
	CGradientProgressCtrl m_progressThink; 
	CStatic	m_staticTip; 
	CString	m_strOutputInfo; 
	//}}AFX_DATA 
 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(CChessDlg) 
	public: 
	virtual BOOL PreTranslateMessage(MSG* pMsg); 
	virtual void WinHelp(DWORD dwData, UINT nCmd = HELP_CONTEXT); 
	protected: 
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support 
	//}}AFX_VIRTUAL 
 
private: 
	CString GetMoveStr(int nFromX,int nFromY,int nToX,int nToY,int nSourceID); 
	CString ConvertDigit2Chinese(int nNum);//转换数字为汉字 
	bool IsChessOver(int nChessSort);	   //判断某种类型棋子有无剩余 
	int IsGameOver(BYTE position[][9]); 
	void InvertChessBoard(BYTE cb[][9]);   //对换红黑双方棋子 
	void AddChessRecord(int nFromX,int nFromY,int nToX,int nToY,int nUserChessColor,int nSourceID); 
										   //记录下棋步骤 
 
public: 
	void Think(); 
 
// Implementation 
protected:	 
	HICON m_hIcon; 
	HICON m_hUndoIcon; 
	HICON m_hRedoIcon; 
	HICON m_hComputerIcon; 
	HICON m_hStopIcon; 
	CSetDlg m_SetDlg; 
	CToolTipCtrl m_tooltip; 
 
	HANDLE m_hHandle; 
	DWORD m_dwThreadID; 
	CString m_strWelcome; 
	bool m_bIsGameOver; 
	int m_iWhoChess;				 //下步该谁走棋 
	int m_nUserChessColor;		     //用户棋子颜色 
	BYTE m_byChessBoard[10][9];      //棋盘数组,用于显示棋盘 
	BYTE m_byBackupChessBoard[10][9];//备份棋盘数组,用于出错恢复 
	BYTE m_byShowChessBoard[10][9];  //用于显示的棋盘 
	MOVECHESS m_MoveChess;		     //用于保存当前被拖拽的棋子的结构 
	POINT m_ptMoveChess;		     //用于保存当前被拖拽的棋子的位置 
	CBitmap m_BoardBmp;			     //bitmap图用于显示棋盘 
	CImageList m_Chessman;		     //用于绘制棋子的ImageList对象 
	int m_nBoardWidth;			     //棋盘宽度 
	int m_nBoardHeight;			     //棋盘高度 
 
	CMoveGenerator* m_pMG; 
	CEveluation* m_pEvel; 
	CSearchEngine* m_pSE;          //搜索引擎指针 
 
	CPoint m_MousePoint;           //当前鼠标所在点 
	Status m_Status;               //当前状态 
	bool m_bIsThinking;            //电脑是否正在想 
	bool m_bIsBegin;               //是否已开始下棋 
	int m_nWillChessColor;         //下一步该哪方下 
	CHESSMOVE m_cmBestMove;        //最佳走法 
	UNDOMOVE m_umUndoMove;         //悔棋走法 
	int m_iChessSort;              //下棋方式 
	int m_iDepthSort;              //深度方式 
	int m_iBout;				   //已下的回合数,如有悔棋算减 
 
	stack m_stackUndoMove;//记录走法的栈,便于悔棋 
	stack m_stackRedoMove;//记录已悔棋的走法的栈,便于还原 
	 
	// Generated message map functions 
	//{{AFX_MSG(CChessDlg) 
	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 OnSetchessboard(); 
	afx_msg void OnSet(); 
	afx_msg void OnAbout(); 
	afx_msg void OnOpenfile(); 
	afx_msg void OnSavefile(); 
	afx_msg void OnScbover(); 
	afx_msg void OnRpawn(); 
	afx_msg void OnRcanon(); 
	afx_msg void OnRcar(); 
	afx_msg void OnRhorse(); 
	afx_msg void OnRelephant(); 
	afx_msg void OnRbishop(); 
	afx_msg void OnRking(); 
	afx_msg void OnBpawn(); 
	afx_msg void OnBcanon(); 
	afx_msg void OnBcar(); 
	afx_msg void OnBhorse(); 
	afx_msg void OnBelephant(); 
	afx_msg void OnBbishop(); 
	afx_msg void OnBking(); 
	afx_msg void OnDelete(); 
	afx_msg void OnRButtonDown(UINT nFlags, CPoint point); 
	afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); 
	afx_msg void OnClose(); 
	afx_msg void OnClearcb(); 
	afx_msg void OnNewgame(); 
	afx_msg void OnBtncomputer(); 
	afx_msg void OnBtnundo(); 
	afx_msg void OnBtnredo(); 
	afx_msg void OnDblclkListchessrecord(); 
	afx_msg void OnBtnStop(); 
	afx_msg void OnSelchangeListchessrecord(); 
	afx_msg void OnPreview(); 
	afx_msg void OnPreviewover(); 
	afx_msg void OnHelp(); 
	afx_msg void OnInversecb(); 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
}; 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_CHESSDLG_H__C9065501_927E_437F_8700_63743E930B62__INCLUDED_)