我的下一个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的字典,它们对应于它们旁边的瓷砖吗?必须有一个更简单的方法。关于一维阵列,只有2D阵列的研究结果没有任何关系。建模this。
答案 0 :(得分:2)
拥有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个边缘情况,我们想要排除某些索引。