Tic Tac Toe最好的举动

时间:2017-03-16 23:16:23

标签: python tic-tac-toe

我刚刚完成了一个确定最佳动作的算法

 def best_Move(self,grid):
  valMax = -2
  posMax = None
  for i in range(9):
    if  grid[i] == ".":
        val = self.move_value(grid[i])
        if val > valMax:
            valMax = val
            posMax = i



return posMax

def move_value(self,position):

    self.grid[position]=player

    if self.won(grid) == "x" or self.win(grid) == "o":
        val = +1
    elif len(grid) == 9:
        val = 0
    else:
        player=change_player(player)
        val=-self.move_value(self.best_move(grid))
        player=change_player(player)

    self.grid[position]="."


    return val

方法best_move返回最佳移动的索引 并且方法move_value返回:0如果是平局则为1或者如果玩家在该特定位置玩过时赢了1,则返回-1;如果玩家在该特定位置玩游戏时失败则返回-1

方法change_player(player)将玩家从x更改为o或从o更改为x 并且该方法将检查是否有赢家,如果是,则返回它的符号(x或o)

问题在于它有时会起作用(这意味着它给了我最好的动作),有时它并没有 这是一个不起作用的例子 网格= [" X"""""" O"" X&#34 ;, """"""""]

x。

o x。

。 。

它返回的结果是1,而它应该是8

我希望你们能帮助我解决这个问题

0 个答案:

没有答案