我正在尝试使用minimax算法制作tic tac toe。我指的是以下代码。但我不理解[0]的用法。请解释以下内容:
value = self.move(x,y).minimax(not player)[0]
参考下面给出的代码。并且还告诉使用返回“无”以及+1或-1或0.请不要否定我的问题,否则我将被阻止。
def minimax(self, player):
if self.won():
if player:
return (-1,None)
else:
return (+1,None)
elif self.tied():
return (0,None)
elif player:
best = -2,0
for x,y in self.fields:
if self.fields[x,y]==self.empty:
value = self.move(x,y).minimax(not player)[0]
if value>best[0]:
best = (value,(x,y))
return best
else:
best = (+2,None)
for x,y in self.fields:
if self.fields[x,y]==self.empty:
value = self.move(x,y).minimax(not player)[0]
if value<best[0]:
best = (value,(x,y))
return best
答案 0 :(得分:1)
但我不理解[0]
的使用
该函数返回(value,(x,y))的元组,因此访问该元素的第0个元素将为您提供value
。
当游戏结束时,该函数返回值None
,因为没有进行任何新动作。 value
将赢得谁(0表示他们并列)。
答案 1 :(得分:1)
minimax
返回一个元组;有问题的语句调用minimax
,获取返回元组的第一个元素([0]
位)并将其分配给best
。