资源简介

根据书籍《PC游戏编程.人机博弈》所附c++源码改写成的java程序,对于用java实现搏奕树搜索算法是一种不错的借鉴;

资源截图

代码片段和文件信息

package wjs.chineseChess;

import wjs.chineseChess.tools.ChessTools;

public class CAlphaBetaEngine extends CSearchEngineAbstract {

public CAlphaBetaEngine() {
this.setName(“Alpha-Beta搜索引擎“);
}

@Override
protected void finalize() throws Throwable {
// TODO Auto-generated method stub
super.finalize();
}

public void SearchAGoodMove(byte[][] position) {
// TODO Auto-generated method stub
m_nMaxDepth = m_nSearchDepth;
ChessTools.memcpy(CurPosition position 90);
alphabeta(m_nMaxDepth -20000 20000);
makeMove(m_cmBestMove);
ChessTools.memcpy(position CurPosition 90);
}

protected int alphabeta(int depth int alpha int beta) {
int score;
int Count i;
byte type;

i = isGameOver(CurPosition depth);
if (i != 0)
return i;

if (depth <= 0) // 叶子节点取估值
return m_pEval.eveluate(CurPosition
(m_nMaxDepth - depth) % 2 == 1 ? true : false);

Count = m_pMG.createPossibleMove(CurPosition depth
(m_nMaxDepth - depth) % 2 == 1 ? true : false);

for (i = 0; i < Count; i++) {

type = makeMove(m_pMG.m_MoveList[depth][i]);
score = -alphabeta(depth - 1 -beta -alpha);
unMakeMove(m_pMG.m_MoveList[depth][i] type);

if (score > alpha) {
alpha = score;
if (depth == m_nMaxDepth)
m_cmBestMove = m_pMG.m_MoveList[depth][i];
}
if (alpha >= beta)
break;

}
return alpha;
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        232  2017-08-31 17:09  chineseChess\.classpath

     文件        232  2017-08-31 17:09  chineseChess\.classpath(1)

     文件        388  2017-08-31 17:09  chineseChess\.project

     文件      79222  2017-08-31 17:09  chineseChess\bin\chessBoard.bmp

     文件       9190  2017-08-31 17:09  chineseChess\bin\Chesses.bmp

     文件        243  2017-08-31 17:09  chineseChess\bin\chessIco.PNG

     文件       3944  2017-08-31 17:09  chineseChess\bin\mask.bmp

     文件       1184  2017-08-31 17:09  chineseChess\bin\wjs\chineseChess\base\Chess.class

     文件        345  2017-08-31 17:09  chineseChess\bin\wjs\chineseChess\base\ChessmanPosition(1).class

     文件        345  2017-08-31 17:09  chineseChess\bin\wjs\chineseChess\base\ChessmanPosition.class

     文件        512  2017-08-31 17:09  chineseChess\bin\wjs\chineseChess\base\ChessMove.class

     文件        459  2017-08-31 17:09  chineseChess\bin\wjs\chineseChess\base\MoveChess.class

     文件        312  2017-08-31 17:09  chineseChess\bin\wjs\chineseChess\base\Point.class

     文件       1900  2017-08-31 17:09  chineseChess\bin\wjs\chineseChess\CAlphaBetaEngine.class

     文件        939  2017-08-31 17:09  chineseChess\bin\wjs\chineseChess\CChessDlg$MyCanvas$1.class

     文件       8245  2017-08-31 17:09  chineseChess\bin\wjs\chineseChess\CChessDlg$MyCanvas.class

     文件       9387  2017-08-31 17:09  chineseChess\bin\wjs\chineseChess\CChessDlg.class

     文件       9715  2017-08-31 17:09  chineseChess\bin\wjs\chineseChess\CEveluation.class

     文件       1964  2017-08-31 17:09  chineseChess\bin\wjs\chineseChess\CFAlphaBetaEngine.class

     文件       7828  2017-08-31 17:09  chineseChess\bin\wjs\chineseChess\CMoveGenerator.class

     文件       1855  2017-08-31 17:09  chineseChess\bin\wjs\chineseChess\CNegamaxEngine.class

     文件       2807  2017-08-31 17:09  chineseChess\bin\wjs\chineseChess\CSearchEngineAbstract.class

     文件        334  2017-08-31 17:09  chineseChess\bin\wjs\chineseChess\CSearchEngineInterFace.class

     文件       3439  2017-08-31 17:09  chineseChess\bin\wjs\chineseChess\NewGameDialog.class

     文件        389  2017-08-31 17:09  chineseChess\bin\wjs\chineseChess\Test.class

     文件       1170  2017-08-31 17:09  chineseChess\bin\wjs\chineseChess\tools\ChessTools.class

     文件      79222  2017-08-31 17:09  chineseChess\src\chessBoard.bmp

     文件       9190  2017-08-31 17:09  chineseChess\src\Chesses.bmp

     文件        243  2017-08-31 17:09  chineseChess\src\chessIco.PNG

     文件       3944  2017-08-31 17:09  chineseChess\src\mask.bmp

............此处省略30个文件信息

评论

共有 条评论