我正在尝试构建一个国际象棋 AI,但遇到了一个奇怪的错误。作为前言,我确实通过了 stackoverflow 并尝试找到类似的问题,但这对我没有帮助,因为我认为我正在正确实现元组解包并且我似乎无法在我的代码中找到错误。
下面是我的 negamax 函数的代码。它包含棋盘、当前玩家和当前深度。
它使用 board.evalFunction() 函数将代表棋盘位置值的数字返回给当前玩家。该功能工作正常。我已经标记了出现错误的行:ValueError: need more than 0 values to unpack
。
有人可以帮我吗?
def negamax(board, player, depth):
if player == 'human':
opposite = 'computer'
else:
opposite = 'human'
if depth == 0:
return (board.evalFunction(player), None)
moveset = board.generateMoves(player)
maximum = -99999999999
optMove = ""
for move in moveset:
newBoard = copy.deepcopy(board)
newBoard.makeMove(move)
newBoard.rotate()
#The following line throws the error
score, move = -1 * negamax(board, opposite, depth - 1)
if score > maximum:
maximum = score
optMove = move
elif score == maximum:
if(random.choice([True, False])):
maximum = score
optMove = move
return (maximum, optMove)