这是我之前关于tic tac toe游戏的问题的继续。我正在制作一个函数,它将收集一个tic tac toe板的所有空网格瓦片,并将它们返回到一个列表中。此函数将是递归的,因为它将继续查找与所做的移动相邻的空网格瓦片。如下所示:
<------->
< X O - >
< - - X >
< O X - >
<------->
因此,假设用户(或者在本例中,是我为计算机编写的代码)想要通过选择一个瓦片来了解哪些网格瓦片是空的。对于上面的示例,将对切片进行编号
0 1 2
3 4 5
6 7 8
因此,假设计算机选择了磁贴1-它将搜索相邻的磁贴(因此,在这种情况下,顶部、左侧、右侧和底部),并查看是否可以移动到那里。如果它发现相邻的瓦片是空的,它也会查找该瓦片的相邻瓦片,直到它耗尽所有可能性。因此,我希望能够使用当前面板和playerMove调用我的函数,并找到相邻的空tiles,并将它们附加到一个列表中。有什么建议吗?
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网格的中间移动,并找到它的相邻瓦片,看看它们是否是空的,依此类推。因此,在2D列表中,我将使用如下内容:
moveList[x-1][y]
moveList[x][y+1]
moveList[x+1][y]
moveList[x][y+1]
其中每一个都对应于顶部、右侧、左侧和底部,这将被递归使用。任何建议都是非常感谢的。
发布于 2013-03-26 09:33:41
在这种情况下,递归策略可能不是最好的。考虑一下您自己提供的示例:
<------->
< X O - >
< - - X >
< O X - >
<------->
假设下一步是在中间的块中进行的。如果递归函数只检查与其相邻的四个瓦片,那么它将错过与其余瓦片“切断”的瓦片(右下角的瓦片)。如果你要编写一个函数来检查所有8个相邻的瓦片(包括对角相邻的),你可能会迭代地编写它。
for i in range(3):
for j in range(3):
pass # Replace with code to add empty tile to list
https://stackoverflow.com/questions/15627749
复制相似问题