我正在建立一个简单的二维网格游戏,并寻找一种方法来计算“威胁”区域,每个角色可以施加在游戏板上。来自当前地点的威胁很容易计算-这是下面的红色钻石。但我想把这些信息和一个任意的“可以在这里行走”区域(橙色)结合起来。
算法将给我一个组合,我的角色可以从所有可用的移动和当前位置攻击的所有平铺。
当然,我可以迭代所有可能的移动,应用钻石形状,并创建一组所有的威胁方块有更好的办法吗?
最佳答案
你在这里解决的问题类似于2dConvolution:
--------------- --------------- -------XX------
-------X------- --------------- ------XXXX-----
------XXX------ -------XX------ -----XXXXXX----
-----XXXXX----- * ------XXX------ = ----XXXXXXX----
------XXX------ --------X------ -----XXXXXX----
-------X------- --------------- ------XXXX-----
--------------- --------------- --------X------
在你的例子中,一个元素要么被覆盖要么被覆盖(相对于包含一个标量或向量值),这就减少到形态学中的Dilation操作。有很多关于膨胀的有效实现的论文和代码示例-this one看起来特别适用于您的问题。