tic tac toe和minimax算法

时间:2016-05-11 16:58:53

标签: python artificial-intelligence tic-tac-toe minimax

我正在尝试使用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

2 个答案:

答案 0 :(得分:1)

  

但我不理解[0]

的使用

该函数返回(value,(x,y))的元组,因此访问该元素的第0个元素将为您提供value

当游戏结束时,该函数返回值None,因为没有进行任何新动作。 value将赢得谁(0表示他们并列)。

答案 1 :(得分:1)

minimax返回一个元组;有问题的语句调用minimax,获取返回元组的第一个元素([0]位)并将其分配给best