【发布时间】:2021-10-09 16:37:10
【问题描述】:
我正在尝试创建一个井字游戏 AI,其中一个想法是计算给定位置的所有可能的未来棋盘状态,以获得统计上的最佳移动。我认为使用递归将是计算这一点的最佳方法,但即使在检查所有获胜位置之前,我也遇到了这个问题,尽管在函数中传递了一个新对象,但棋盘会发生变化。
import sys
def calc(board : list, turn : bool):
game_over = True
letter = "o" if turn else "x"
for i in range(len(board)):
for j in range(len(board)):
if board[i][j] == "":
t = list(board)
t[i][j] = letter
game_over = False
calc(list(t), not turn)
if game_over:
print(board)
def main():
sys.setrecursionlimit(50000)
board = [["", "", ""],["", "", ""],["", "", ""]]
calc(board, True)
if __name__ == '__main__':
main()
如何让棋盘保持不变,以便评估所有可能的移动?
【问题讨论】:
-
使用 board.copy() ?
-
@RaniSharim 做同样的事情???试过了,还是不行。
-
list(t)只是创建一个浅副本。要么创建深拷贝,要么使用浅板。