我正在建立一个简单的二维网格游戏,并寻找一种方法来计算“威胁”区域,每个角色可以施加在游戏板上。来自当前地点的威胁很容易计算-这是下面的红色钻石。但我想把这些信息和一个任意的“可以在这里行走”区域(橙色)结合起来。
算法将给我一个组合,我的角色可以从所有可用的移动和当前位置攻击的所有平铺。
当然,我可以迭代所有可能的移动,应用钻石形状,并创建一组所有的威胁方块有更好的办法吗?

最佳答案

你在这里解决的问题类似于2dConvolution

---------------     ---------------     -------XX------
-------X-------     ---------------     ------XXXX-----
------XXX------     -------XX------     -----XXXXXX----
-----XXXXX-----  *  ------XXX------  =  ----XXXXXXX----
------XXX------     --------X------     -----XXXXXX----
-------X-------     ---------------     ------XXXX-----
---------------     ---------------     --------X------

在你的例子中,一个元素要么被覆盖要么被覆盖(相对于包含一个标量或向量值),这就减少到形态学中的Dilation操作。有很多关于膨胀的有效实现的论文和代码示例-this one看起来特别适用于您的问题。

09-11 05:45