Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的Lights Out-如何在一维数组中获取相邻的分片?_Python_List_Pygame - Fatal编程技术网

Python中的Lights Out-如何在一维数组中获取相邻的分片?

Python中的Lights Out-如何在一维数组中获取相邻的分片?,python,list,pygame,Python,List,Pygame,我的下一个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) 然后,程序

我的下一个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,并且一定数量的瓷砖以“on”开头。当玩家单击互动程序时,互动程序的状态以及所有正交相邻的互动程序都会翻转


为了得到相邻的图块,我应该制作一个数字为0到24的字典,对应于它们旁边的图块吗?一定有更简单的方法。研究没有发现关于一维阵列的任何结果,只有二维阵列。建模。

拥有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种边缘情况,我们希望排除某些索引。

从制作二维板而不是一维板开始可能最简单。否决投票的原因?谢谢,这很有道理。代码后面的最后一句话非常有用。我对编程比较陌生,请原谅,如果问题很明显,我什么都找不到。