资源简介

中国象棋源码 陶善文编写 通过VC++2013编译 MFC 游戏编程

资源截图

代码片段和文件信息

// AlphaBetaEngine.cpp: implementation of the CAlphaBetaEngine class.
//
//////////////////////////////////////////////////////////////////////

#include “stdafx.h“
#include “AlphaBetaEngine.h“

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CAlphaBetaEngine::CAlphaBetaEngine()
{

}

CAlphaBetaEngine::~CAlphaBetaEngine()
{

}

int CAlphaBetaEngine::SearchAGoodMove(BYTE position[][9])
{
memcpy(CurPositionposition90);    //将当前局面复制到CurPosition

m_nMaxDepth=m_nSearchDepth; //设定搜索深度
AlphaBeta(m_nMaxDepth-2000020000);//进行alphabeta搜索
m_umUndoMove.cmChessMove=m_cmBestMove;
m_umUndoMove.nChessID=MakeMove(&m_cmBestMove);

memcpy(positionCurPosition90); //将走过的棋盘传出
return 0;
}

int CAlphaBetaEngine::AlphaBeta(int nDepthint alphaint beta)
{
int score;
int Counti;
BYTE type;

i=IsGameOver(CurPositionnDepth);//检查是否游戏结束
if(i!=0)
return i;//结束,返回估值

//叶子节点取估值
if(nDepth<=0)
return m_pEval->Eveluate(CurPosition(m_nMaxDepth-nDepth)%2m_nUserChessColor);

//此函数找出当前局面所有可能的走法,然后放进m_pMG ->m_MoveList当中
Count=m_pMG->CreatePossibleMove(CurPositionnDepth(m_nMaxDepth-nDepth)%2m_nUserChessColor);
if(nDepth==m_nMaxDepth)
{
//在根节点设定进度条
m_pThinkProgress->SetRange(0Count);
m_pThinkProgress->SetStep(1);
}

//对所有可能的走法
for(i=0;i {
if(nDepth==m_nMaxDepth)
m_pThinkProgress->StepIt();//走进度条

type=MakeMove(&m_pMG->m_MoveList[nDepth][i]);  //将当前局面应用此走法,变为子节点的局面
score=-AlphaBeta(nDepth-1-beta-alpha);       //递归搜索子节点
UnMakeMove(&m_pMG->m_MoveList[nDepth][i]type);//将此节点的局面恢复为当前节点

if(score>alpha)
{
alpha=score;//保留极大值

//靠近根节点时保留最佳走法
if(nDepth==m_nMaxDepth)
m_cmBestMove=m_pMG->m_MoveList[nDepth][i];
}

if(alpha>=beta)
break;//剪枝,放弃搜索剩下的节点
}

return alpha;//返回极大值
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        2215  2017-09-24 19:24  Source Code\Alphabeta_HH.cpp
     文件         831  2017-09-24 19:24  Source Code\Alphabeta_HH.h
     文件        2762  2017-09-24 19:24  Source Code\AlphaBeta_TTEngine.cpp
     文件         845  2017-09-24 19:24  Source Code\AlphaBeta_TTEngine.h
     文件        2125  2017-09-24 19:28  Source Code\AlphaBetaEngine.cpp
     文件         823  2017-09-24 19:24  Source Code\AlphaBetaEngine.h
     文件        1225  2017-09-24 19:24  Source Code\AspirationSearch.cpp
     文件         708  2017-09-24 19:28  Source Code\AspirationSearch.h
     目录           0  2017-11-24 17:46  Source Code\Backup\
     文件         875  2017-09-28 15:48  Source Code\Backup\Chess.sln
     文件       46080  2017-11-24 17:36  Source Code\Backup\Chess.v12.suo
     文件      158292  2018-03-05 01:18  Source Code\Chess.aps
     文件        2049  2004-07-05 11:48  Source Code\Chess.cpp
     文件        7968  2016-07-06 10:46  Source Code\Chess.dsp
     文件         535  2004-08-24 09:49  Source Code\Chess.dsw
     文件      217088  2004-08-24 13:19  Source Code\Chess.exe
     文件        1334  2004-08-23 20:19  Source Code\Chess.h
     文件    20589568  2017-11-24 17:36  Source Code\Chess.ncb
     文件       64000  2016-07-06 10:57  Source Code\Chess.opt
     文件        3076  2016-07-06 10:46  Source Code\Chess.plg
     文件       11322  2018-03-05 01:18  Source Code\Chess.rc
     文件    74448896  2018-03-11 00:06  Source Code\Chess.sdf
     文件         955  2017-11-24 17:46  Source Code\Chess.sln
     文件       46080  2017-11-24 17:36  Source Code\Chess.suo
     文件       93184  2018-03-11 00:06  Source Code\Chess.v12.suo
     文件       18452  2017-09-24 18:55  Source Code\Chess.vcproj
     文件        1421  2017-11-24 17:36  Source Code\Chess.vcproj.dujinfeng-PC.dujinfeng.user
     文件       10759  2018-02-26 23:20  Source Code\Chess.vcxproj
     文件        7363  2017-11-24 17:46  Source Code\Chess.vcxproj.filters
     文件         165  2017-11-24 17:50  Source Code\Chess.vcxproj.user
     文件       50869  2018-03-05 01:28  Source Code\ChessDlg.cpp
............此处省略203个文件信息

评论

共有 条评论