search.h

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

H
54
字号
// Search.h: interface for the CSearch class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SEARCH_H__D84592FC_0024_43D1_8B04_1FFFC769BD05__INCLUDED_)
#define AFX_SEARCH_H__D84592FC_0024_43D1_8B04_1FFFC769BD05__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

//#include "define.h"
#include "Evaluation.h"
#include "MoveGenerator.h"
class CMoveGenerator;
class CSearch  
{
public:
	CSearch();
	virtual ~CSearch();
	
	virtual SearchAGoodMove(BYTE position[10][9])=0;        //走下一步
	ChessMove GetBestMove(){return m_cmBestMove;};			//得到最佳走法
	UnDoMove GetUndoMove(){return m_umUndoMove;};			//得到悔棋走法
	void SetSearchDepth(int nDepth){m_nSearchDepth=nDepth;};//设定最大搜索深度
	void SetEvaluator(CEvaluation* pEval){m_pEval=pEval;};  //设定估值引擎
	void SetMoveGenerator(CMoveGenerator* pMG){m_pMG =pMG;};//设定走法产生器
	void SetUserChessColor(int nUserChessColor){m_nUserChessColor=nUserChessColor;};
															//设定用户为黑方或红方

	void UndoChessMove(BYTE position[10][9],ChessMove* move,BYTE nChessID);//悔棋
	void RedoChessMove(BYTE position[10][9],ChessMove* move);              //还原

protected:
	int IsGameOver(BYTE position[10][9],int nDepth);//判断是否已分胜负
	BYTE MakeMove(ChessMove* move);				    //根据某一走法产生走了之后的棋盘
	void UnMakeMove(ChessMove* move,BYTE nChessID); //恢复为走过之前的棋盘	

public:
	int m_nUserChessColor;

protected:
	BYTE CurPosition[10][9];		//搜索时用于记录当前节点棋盘状态的数组
	ChessMove m_cmBestMove;			//记录最佳走法
	UnDoMove m_umUndoMove;			//用于悔棋
	CMoveGenerator* m_pMG;			//走法产生器
	CEvaluation* m_pEval;			//估值核心
	int m_nSearchDepth;				//最大搜索深度
	int m_nMaxDepth;				//当前搜索的最大搜索深度

};

#endif // !defined(AFX_SEARCH_H__D84592FC_0024_43D1_8B04_1FFFC769BD05__INCLUDED_)

⌨️ 快捷键说明

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