
AI
寻路
|
173
AI
寻路
MoveEvaluation me = negmax(ply, player, opponent);
return me.move;
}
public MoveEvaluation negmax(int ply, IPlayer player, IPlayer opponent)
//
如果没有可行走法或者当前是叶子结点,那么返回棋局状态得分。
Iterator<IGameMove> it = player.validMoves(state).iterator();
if (ply == 0 || !it.hasNext()) {
return new MoveEvaluation(player.eval(state));
}
//
尝试改进这个下界。
MoveEvaluation best = new MoveEvaluation(MoveEvaluation.minimum());
//
得到这个玩家的走法,并且生成这些走法能够达到的状态。
//
然后选择负分最大的子
结点。
while (it.hasNext()) {
IGameMove move = it.next();
move.execute(state);
//
使用同样的
negmax
函数评估
位置
。
MoveEvaluation me = negmax(ply ...