在网格游戏中找到所有可拍摄的细胞

时间:2012-06-23 10:38:02

标签: c++ algorithm game-engine

我正在做简单的网格游戏(网格是矩阵128x128),矩阵填充0和1(1个子弹可以通过,0个子弹不能通过不能再继续旅行,我也有子弹范围32个单元格) 。 我站在位置(32,89)。任何人都可以建议我任何有效的计算所有可拍摄场的算法? (我知道用简单的方法计算范围内的每个字段,但我想知道是否有更好的想法)

2 个答案:

答案 0 :(得分:2)

不幸的是,没有更好的方法。

如果您将在列表中的位置拍摄的点,那么这将是可能的。在这种情况下,您可以通过从列表中删除其他元素来消除一些检查。

如果您的网格没有变化,您可以为每个位置评估它,以供日后使用。 这将使用128 * 128 *(2pi *范围)内存,大约4MB。 如果是这种情况,你可以保存每个可能的角度,最多2pi * range = 202个位置,然后再进行202次检查而不是1024(32 * 32)。

答案 1 :(得分:2)

有一种更有效的算法。 Eric Lippert撰写了一篇关于网格游戏中阴影投射的精彩系列。如果我理解正确,这正是您所需要的。