?? searchengine.h
字號:
// SearchEngine.h: interface for the CSearchEngine class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SEARCHENGINE_H__7A7237B9_0908_45D8_B102_94E342B174A5__INCLUDED_)
#define AFX_SEARCHENGINE_H__7A7237B9_0908_45D8_B102_94E342B174A5__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "Eveluation.h"
#include "MoveGenerator.h"
#include "GradientProgressCtrl.h"
//搜索引擎的基類
class CSearchEngine
{
public:
CSearchEngine();
virtual ~CSearchEngine();
public:
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 SetEveluator(CEveluation* pEval){m_pEval=pEval;}; //設定估值引擎
void SetMoveGenerator(CMoveGenerator* pMG){m_pMG =pMG;};//設定走法產生器
void SetThinkProgress(CGradientProgressCtrl* pThinkProgress){m_pThinkProgress=pThinkProgress;};
//設定顯示思考進度的進度條
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:
CGradientProgressCtrl* m_pThinkProgress;
//用以顯示思考進度的進度條指針
BYTE CurPosition[10][9]; //搜索時用于記錄當前節點棋盤狀態的數組
CHESSMOVE m_cmBestMove; //記錄最佳走法
UNDOMOVE m_umUndoMove;
CMoveGenerator* m_pMG; //走法產生器
CEveluation* m_pEval; //估值核心
int m_nSearchDepth; //最大搜索深度
int m_nMaxDepth; //當前搜索的最大搜索深度
};
#endif // !defined(AFX_SEARCHENGINE_H__7A7237B9_0908_45D8_B102_94E342B174A5__INCLUDED_)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -