基本上我在Python中制作Maze Generator。
程序创建多个Cell
个对象,一旦创建,被推送到名为grid
的一维列表,网格使用函数
def get_index(self, i, j, cols, rows):
if i < 0 or j < 0 or i > cols-1 or j > rows-1
return None
return i + j * cols
生成自身的索引及其顶部,右侧,底部和左侧邻居。我为这样的4个邻居调用了这个函数:
self.top = self.get_index(i, j-1, cols, rows)
self.right = self.get_index(i+1, j, cols, rows)
self.bottom = self.get_index(i, j+1, cols,
self.left = self.get_index(i-1, j, cols, rows)
这两部分有效。但是,一旦我像这样分配/检查具有Null邻居的单元格
print(grid[self.top])
因为没有邻居而抛出异常! (无例外)
有没有办法将None
值分配给对象列表?
E.g。单元格0,0的索引为0,顶部邻居值为None/-1/False etc.
右值为1,底值为10,左值为None
。
然后我想查看列表并为每个单元分配4个邻居。
任何帮助都将不胜感激。
编辑:
我已经搬到了字典,它几乎可以工作。在旧方法grid[]
将保留所有单元格对象。现在grid_dict{}
做了。
它保留了单元格,i和j。我如何使用i和j的值作为指向具有精确i和j的单元格对象的指针?一旦这个工作,我希望做这样的事情来走过邻居
#use i, j of neighbour here to reference next cell
next() = neighbour()#random choice of top, right, bottom, left
next.visited = True
current = next()