我正在创建一个简单的 AI,它需要根据定义的策略规则评估董事会状态。游戏很像俄罗斯方块:你需要根据棋盘状态和下 N 个棋子的顺序(N 是一个变量)来决定当前的最佳移动。
换句话说,您必须使用片段队列中的第一块(例如具有多个“下一个”级别的俄罗斯方块)。
对于单步前进,这非常简单:
bestMove = function(Board board, piece piece)
{
possibleMoves = getPossibleMoves(board, piece)
bestMove = null
bestScore = -INFINITY
boardCp = clone(board)
for (move in possibleMoves)
{
tempBoard = applyMove(boardCp, move)
if (tempBoard.score > bestScore)
{
bestMove = move
bestScore = tempBoard.score
}
boardCp = undoMove(tempBoard, move)
}
return move
}
现在,我如何将这个算法推广到 N 个前进?我不是递归专家,所以感谢您的帮助!
PS:我使用的是 Java,但欢迎使用任何语言或伪代码!