这是我的“连接4”的一部分。 python中的游戏代码,我尝试使用不同的板设置创建新节点。
class node(object):
def __init__(self, depth,board=None):
if board is None:
board = []
self.board = board
self.depth = depth
我定义了这样的实例:
start = node(2,new_board)
其中new_board是列表[7x6],用点填充。
之后我尝试用这个函数创建子节点:
def child(depth, parent_board = []):
children = [node(depth,[]) for x in range(7)]
for x in range(7):
y = 5
while(y >= 0 and (parent_board[x,y] == 'O' or parent_board[x,y] == 'X')):
y = y-1
parent_board[x,y] = 'O'
if (depth >=0):
children[x] = node(depth-1, parent_board)
children[x].board = parent_board
parent_board[x,y] = '.'
return children
父板的修改是正确的,但每当我尝试将它传递给数组中的子节点时,每个子节点都会收到相同的数组。
我知道列表在python中是可变的(这就是为什么我在类__init__
函数中使用那个'无事物),但是我不能让每个孩子都有不同的列表。
答案 0 :(得分:0)
您可以在节点功能中复制列表,例如:
import copy
...
self.board = copy.copy(board)