Lights Out in Python - 如何在一维数组中获取相邻的图块



我的下一个python项目是使用python和pygame的Lights Out。我需要一些帮助来开始。我有一个系统,它创建一个空板,然后创建 25 个索引位置,并将它们全部设置为 false,除了少数几个,如下所示:

board = []
for x in range(0, 25):
    board.append(False)
for x in range(0, random.randint(3,8)):
    board[x] = True
random.shuffle(board)

然后,程序可以使用该列表读取 5x5 网格中矩形的状态。但是如何找到相邻的瓷砖呢?

熄灯由可以打开或关闭的磁贴网格组成,类似于许多蜂窝动画。一块板通常是 5x5,一定数量的图块以"开"开头。当玩家单击图块时,图块的状态以及所有正交相邻的图块都会翻转。

要获取相邻的磁贴,我是否应该制作一个包含数字 0 到 24 的字典,与它们旁边的磁贴相对应?必须有一个更简单的方法。研究没有发现任何关于1D阵列的东西,只有2D阵列。对此进行建模。

有了MXM大小的电路板,我们可以编写这个简短的算法:

def getIndexOfNeighoringTiles(i):
    neighbors = []
    if (i % M != 0):
        neighbors.append(i-1)
    if (i % M != (M-1)):
        neighbors.append(i+1)
    if (i / M != 0):
        neighbors.append(i-M)
    if (i / M != (M-1)):
        neighbors.append(i+M)
    return neighbors

为了解释一下,我们有 4 种边缘情况,我们想要排除某些索引。

最新更新