資源簡介
中國象棋及五子棋人機(jī)對弈算法詳細(xì)講解和vc源代碼實(shí)現(xiàn)

代碼片段和文件信息
//?COPYRIGHT?NOTES
//?---------------
//?This?source?code?is?a?part?of?chess?which?is?an?example?of?.
//?You?may?use?compile?or?redistribute?it?as?part?of?your?application?
//?for?free.?
//?You?cannot?redistribute?sources?without?the?official?agreement?of?the?author.?
//?If?distribution?of?you?application?which?contents?code?below?was?occured?place?
//?e-mail??on?it?is?to?be?appreciated.
//?This?code?can?be?used?WITHOUT?ANY?WARRANTIES?on?your?own?risk.
//?
//?Spring?Wang?
//?---------------
//?版權(quán)聲明
//?---------------
//?本文件所含之代碼是《人機(jī)博弈程序設(shè)計(jì)指南》的范例程序中國象棋的一部分
//?您可以免費(fèi)的使用?編譯?或者作為您應(yīng)用程序的一部分。?
//?但,您不能在未經(jīng)作者書面許可的情況下分發(fā)此源代碼。?
//?如果您的應(yīng)用程序使用了這些代碼,在您的應(yīng)用程序界面上?
//?放入?e-mail??是令人欣賞的做法。
//?此代碼并不含有任何保證,使用者當(dāng)自承風(fēng)險(xiǎn)。
//?
//?王小春?
//?AlphaBetaAndTT.cpp:?implementation?of?the?CAlphaBetaAndTT?class.
//
//////////////////////////////////////////////////////////////////////
#include?“stdafx.h“
#include?“chess.h“
#include?“AlphaBetaAndTT.h“
#ifdef?_DEBUG
#undef?THIS_FILE
static?char?THIS_FILE[]=__FILE__;
#define?new?DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
//?Construction/Destruction
//////////////////////////////////////////////////////////////////////
CAlphaBetaAndTT::CAlphaBetaAndTT()
{
}
CAlphaBetaAndTT::~CAlphaBetaAndTT()
{
}
CAlphaBetaAndTT::SearchAGoodMove(BYTE?position[10][9])
{
memcpy(CurPosition?position?90);
CalculateInitHashKey(CurPosition);
m_nMaxDepth?=?m_nSearchDepth;
alphabeta(m_nMaxDepth?-20000?20000);
MakeMove(&m_cmBestMove);
memcpy(position?CurPosition?90);
}
int?CAlphaBetaAndTT::alphabeta(int?depth?int?alpha?int?beta)
{
int?score;
int?Counti;
BYTE?type;
int?side;
i?=?IsGameOver(CurPosition?depth);
if?(i?!=?0)
return?i;
side?=?(m_nMaxDepth-depth)%2;
score?=?LookUpHashTable(alpha?beta?depth?side);?
if?(score?!=?66666)?
return?score;
if?(depth?<=?0) //葉子節(jié)點(diǎn)取估值
{
score?=?m_pEval->Eveluate(CurPosition?side?);
EnterHashTable(exact?score?depth?side?);
return?score;
}
Count?=?m_pMG->CreatePossibleMove(CurPosition?depth?side);
????int?eval_is_exact?=?0;
for?(i=0;i {
Hash_MakeMove(&m_pMG->m_MoveList[depth][i]?CurPosition);
type?=?MakeMove(&m_pMG->m_MoveList[depth][i]);
score?=?-alphabeta(depth?-?1?-beta?-alpha);
Hash_UnMakeMove(&m_pMG->m_MoveList[depth][i]type?CurPosition);?
UnMakeMove(&m_pMG->m_MoveList[depth][i]type);?
????????if?(score?>=?beta)?
{
EnterHashTable(lower_bound?score?depthside);
????????????return?score;
????????}
if?(score?>?alpha)
{
alpha?=?score;
eval_is_exact?=?1;
if(depth?==?m_nMaxDepth)
m_cmBestMove?=?m_pMG->m_MoveList[depth][i];
}
}
????if?(eval_is_exact)?
EnterHashTable(exact?alpha?depthside);
????else?
EnterHashTable(upper_bound?alpha
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????3195??2002-06-13?06:59??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\AlphaBetaAndTT.cpp
?????文件???????1778??2002-06-13?06:59??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\AlphaBetaAndTT.h
?????文件???????3951??2002-06-13?06:59??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\AlphaBetaEngine.cpp
?????文件???????1731??2002-06-13?06:59??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\AlphaBetaEngine.h
?????文件???????2913??2002-06-13?06:58??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\Alphabeta_HH.cpp
?????文件???????1762??2002-06-13?06:59??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\Alphabeta_HH.h
?????文件???????2045??2002-06-13?06:59??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\AspirationSearch.cpp
?????文件???????1681??2002-06-13?06:59??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\AspirationSearch.h
?????文件???????1550??2002-06-21?06:52??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\chess.clw
?????文件???????3049??2002-06-13?06:59??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\chess.cpp
?????文件???????6634??2002-04-27?06:51??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\chess.dsp
?????文件????????717??2001-10-28?20:22??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\chess.dsw
?????文件???????2332??2002-06-13?06:59??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\chess.h
?????文件???????1439??2002-06-21?06:52??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\chess.plg
?????文件???????6314??2002-06-21?06:34??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\chess.rc
?????文件??????10224??2002-06-21?06:52??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\chessDlg.cpp
?????文件???????3126??2002-06-21?06:38??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\chessDlg.h
?????文件?????155689??2002-06-21?06:34??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\Debug\chess.exe
?????文件???????2085??2002-06-13?06:59??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\define.h
?????文件??????18635??2002-06-13?06:59??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\Eveluation.cpp
?????文件???????2444??2002-06-13?06:59??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\Eveluation.h
?????文件???????3680??2001-11-30?02:58??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\FAlphaBetaAndTT.cpp
?????文件????????787??2001-11-02?21:43??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\FAlphaBetaAndTT.h
?????文件???????2681??2002-06-13?06:59??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\FAlphaBetaEngine.cpp
?????文件???????1739??2002-06-13?06:59??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\FAlphaBetaEngine.h
?????文件???????3920??2002-06-13?06:59??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\HistoryHeuristic.cpp
?????文件???????2082??2002-06-13?06:59??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\HistoryHeuristic.h
?????文件???????3293??2002-06-13?06:59??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\IDAlphabeta.cpp
?????文件???????1714??2002-06-13?06:59??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\IDAlphabeta.h
?????文件????????579??2001-10-31?18:52??PC?游戲編程(人機(jī)博弈)中國象棋和五子棋的算法講解和vc源代碼\boyi\chess\MinimaxEngine.cpp
............此處省略89個(gè)文件信息
評論
共有 條評論