Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tic-tac-toe和minimax算法_Python_Artificial Intelligence_Tic Tac Toe_Minimax - Fatal编程技术网

Python tic-tac-toe和minimax算法

Python tic-tac-toe和minimax算法,python,artificial-intelligence,tic-tac-toe,minimax,Python,Artificial Intelligence,Tic Tac Toe,Minimax,我正在尝试使用minimax算法制作tic-tac-toe。我指的是以下代码。但是我不理解[0]的用法。请解释以下内容: value = self.move(x,y).minimax(not player)[0] 参考下面给出的代码。并告诉您如何使用返回“None”以及+1或-1或0。请不要对我的问题投反对票,否则我将被阻止 def minimax(self, player): if self.won(): if player: return (-1,Non

我正在尝试使用minimax算法制作tic-tac-toe。我指的是以下代码。但是我不理解[0]的用法。请解释以下内容:

value = self.move(x,y).minimax(not player)[0]
参考下面给出的代码。并告诉您如何使用返回“None”以及+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
def minimax(自身,玩家):
如果self.won():
如果玩家:
返回(-1,无)
其他:
回报(+1,无)
elif self.tied():
返回(0,无)
elif播放器:
最佳=-2,0
对于self.fields中的x,y:
如果self.fields[x,y]==self.empty:
值=自身移动(x,y).最小最大值(非玩家)[0]
如果值>最佳[0]:
最佳=(值,(x,y))
回报最好
其他:
最佳=(+2,无)
对于self.fields中的x,y:
如果self.fields[x,y]==self.empty:
值=自身移动(x,y).最小最大值(非玩家)[0]
如果值
但我不理解[0]的用法

该函数返回一个元组(value,(x,y)),因此访问该元组的第0个元素将得到

游戏结束时,函数返回值中的
None
,因为没有新的移动。
值将是谁赢了(0表示他们平手)

但我不理解[0]的用法

该函数返回一个元组(value,(x,y)),因此访问该元组的第0个元素将得到


游戏结束时,函数返回值中的
None
,因为没有新的移动。
值将是谁赢了(0表示他们平手)。
minimax
返回一个元组;所讨论的语句调用
minimax
,获取返回的元组的第一个元素(
[0]
位),并将其分配给
best

minimax
返回元组;所讨论的语句正在调用
minimax
,获取返回元组的第一个元素(
[0]
位),并将其分配给
最佳

使用此获取其他帮助:使用此获取其他帮助: