2

我正在制作简单的网格,如游戏(网格是矩阵 128x128)并且矩阵填充了 0 和 1(1 颗子弹可以通过,0 颗子弹不能穿过不能继续旅行,我的子弹射程 32 个单元格)。例如,我站在位置 (32,89)。谁能建议我任何计算所有可射击场的有效算法?(我知道通过简单检查范围内的每个文件以简单的方式进行计算,但我想知道有没有更好的主意)

4

2 回答 2

2

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

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

如果您的网格没有改变,您可以为每个位置评估它并保存以备后用。这将使用大约 4MB 的 128*128*(2pi*range) 内存。如果是这种情况,您可以为每个可能的角度保存它,从而产生最多 2pi*range=202 个位置,然后进行 202 次检查而不是之前需要的 1024(32*32) 次检查。

于 2012-06-23T11:18:46.460 回答
2

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

于 2012-06-23T11:26:28.550 回答