📄 searchengine.cpp
字号:
// SearchEngine.cpp: implementation of the CSearchEngine class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "chess.h"
#include "SearchEngine.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
#define B_KING 1 // 将
#define R_KING 8// 将
#define NOCHESS 0
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CSearchEngine::CSearchEngine()
{
}
CSearchEngine::~CSearchEngine()
{
//delete m_pEval;
}
CHESSMOVE CSearchEngine::SearchGoodMove(int board[][9])
{
CHESSMOVE p;
p.From.X=0;p.From.Y=0;p.To.X=1;p.To.Y=0;
return p;
}
void CSearchEngine::SetSearchDeepth(int nDepth)
{
m_nSearchDepth=nDepth;
}
void CSearchEngine::SetEvaluator(CEveluation *pEval)
{
m_pEval=pEval;
}
void CSearchEngine::SetMoveGenerator(SetChess *pMG)
{
m_pMG=pMG;
//memcpy(board,pMG->board.ChessBoard,90*4);
memcpy(board1,m_pMG->board.ChessBoard,90*4);
}
/*void CSearchEngine::MakeMove(CHESSMOVE *move)
{
//int ID;
/*ID=move->ChessID;
m_pMG->site[ID].x=move->To.Y*35+10;
m_pMG->site[ID].y=move->To.X*35+10;
board[move->To.Y][move->To.X]=board[move->From.Y][move->From.X];
board[move->From.Y][move->From.X]=NOCHESS;
int i,j;
for(i=0;i<10;i++)
{
for(j=0;j<9;j++)
{
str.Format("%d ",board[i][j]);
fwrite(str,sizeof(char),str.GetLength(),fp1);
}
str.Format(" \n");
fwrite(str,sizeof(char),str.GetLength(),fp1);
}
}*/
void CSearchEngine::UnMakeMove(CHESSMOVE *move, BYTE type)
{
}
//flag true为红方,false 为黑方
int CSearchEngine::IsGameOver(int board[][9], int nDepth,bool flag)
{
int i,j;
bool RedLive=false,BlackLive=false;
//检查红方九宫是否有帅
for(i=7;i<10;i++)
for(j=3;j<6;j++)
{
if(board[i][j]==B_KING)
BlackLive=true;
if(board[i][j]==R_KING)
RedLive=true;
}
for(i=0;i<3;i++)
for(j=3;j<6;j++)
{
if(board[i][j]==B_KING)
BlackLive=true;
if(board[i][j]==R_KING)
RedLive=true;
}
if(!BlackLive)
if(flag)
return -19990-nDepth;
else
return +19990+nDepth;
if(!RedLive)
if(flag)
return 19990+nDepth;
else
return -19990-nDepth;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -