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 + -
显示快捷键?