⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 searchengine.cpp

📁 一个简单的象棋游戏
💻 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 + -