0

所以我试图找到一种算法,用于从选定的单元格径向动画网格。

例如,假设我有以下网格,并且带有“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)

4

2 回答 2

1

以下类似 python 的伪代码将完成此操作,尽管它会多次切换某些单元格。所以switch只让 from xto 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)
于 2013-06-20T06:55:45.120 回答
1

您可以简单地在网格上运行(这部分代码可以优化)并更改xy是否有相邻o的 's. 然后再次运行并将所有y' 更改为o'。

另一种解决方案是保存初始o位置 (x0, y0) 并将 all 更改xoifabs(x - x0) + abs(y - y0) = ii第 th 次迭代。

于 2013-06-20T08:02:46.873 回答