这是我之前关于井字游戏的问题的延续。我正在制作一个函数,它将收集井字棋棋盘的所有空网格图块,并将它们返回到一个列表中。这个函数将是递归的,因为它会不断寻找与移动相邻的空网格图块。像这样的东西:
<------->
< X O - >
< - - X >
< O X - >
<------->
因此,假设用户(或者在这种情况下,我为与计算机对战的计算机编写的代码)想通过选择一个图块来了解哪些网格图块是空的。对于上面的示例,瓷砖将被编号
0 1 2
3 4 5
6 7 8
所以假设计算机选择了瓷砖 1 - 它会搜索相邻的瓷砖(所以在这种情况下,顶部、左侧、右侧和底部)并查看它是否可以在那里移动。如果它发现相邻的图块是空的,它也会找到该图块的相邻图块,直到用尽所有可能性。因此,我希望能够使用当前棋盘和 playerMove 调用我的函数,并找到相邻的空白图块,并将它们附加到列表中。有小费吗?
def whatIsEmpty(moveList,move):
emptyTiles = []
#something that allows you to find the adjacent tiles of the move
#something that allows you to find the adjacent tiles of the tiles found above, until all are found
我知道我需要几个 for 循环,但我不知道如何开始。我所知道的是我想在一个假想的 3x3 网格的中间移动,并找到它的相邻图块,看看它们是否是空的,等等。所以在二维列表中,我会使用这样的东西:
moveList[x-1][y]
moveList[x][y+1]
moveList[x+1][y]
moveList[x][y+1]
其中每一个对应于顶部、右侧、左侧和底部,这将被递归使用。非常感谢任何提示。