我刚刚完成了一个确定最佳动作的算法
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 ;, """"""""]
它返回的结果是1,而它应该是8
我希望你们能帮助我解决这个问题