所以我试图找到一种算法,用于从所选单元径向动画网格。
例如,假设我有以下网格,带有“o”的单元格是从中选择的网格:
x | x | x | x | x |
x | x | x | x | x |
x | x | x | o | x |
x | x | x | x | x |
x | x | x | x | x |
这应该继续这样:
x | x | x | x | x |
x | x | x | o | x |
x | x | o | o | o |
x | x | x | o | x |
x | x | x | x | x |
x | x | x | o | x |
x | x | o | o | o |
x | o | o | o | o |
x | x | o | o | o |
x | x | x | o | x |
x | x | o | o | o |
x | o | o | o | o |
o | o | o | o | o |
x | o | o | o | o |
x | x | o | o | o |
等。所以我基本上需要循环,每次我这样做,我需要新的单元格的坐标需要切换到笛卡尔坐标(即x,y)
答案 0 :(得分:1)
以下类似python的伪代码将实现此目的,尽管它会多次切换一些单元格。因此,switch
只能从x
到o
,而不会对已经处于状态o
的单元格产生影响。
for i in 0 .. size: # iteration
for j in 0 .. i: # both end points are inclusive
switch(x - i + j, y + j)
switch(x - i + j, y - j)
switch(x + i - j, y + j)
switch(x + i - j, y - j)
答案 1 :(得分:1)
您可以简单地在网格上运行(可以优化此部分代码),如果x
具有相邻y
,则将o
更改为y
。然后再次运行并将所有o
更改为o
。
另一种解决方案是保存初始x
位置(x0,y0),并在第o
次迭代时abs(x - x0) + abs(y - y0) = i
更改所有i
至{{1}}。