我正在构建一个简单的基于 2D 网格的游戏,并正在寻找一种方法来计算每个角色可以在游戏板上施加的“威胁”区域。当前地点的威胁很容易计算 - 这是下面的红色菱形。但我希望将这些信息与任意“可以步行到这里”区域(橙色)结合起来。
该算法一起会给我我的角色可以从所有可用动作和当前位置攻击的所有图块的组合。
当然,我可以迭代所有可能的动作,在那里应用菱形并创建一组所有威胁方块。有没有更好的办法?
您在这里解决的问题类似于 2D卷积 http://en.wikipedia.org/wiki/Convolution:
--------------- --------------- -------XX------
-------X------- --------------- ------XXXX-----
------XXX------ -------XX------ -----XXXXXX----
-----XXXXX----- * ------XXX------ = ----XXXXXXX----
------XXX------ --------X------ -----XXXXXX----
-------X------- --------------- ------XXXX-----
--------------- --------------- --------X------
在您的情况下,元素仅被覆盖或未被覆盖(相对于包含标量或向量值),这会减少到Dilation http://en.wikipedia.org/wiki/Mathematical_morphology#Dilation形态学操作。有许多关于膨胀的有效实现的论文和代码示例 -this one http://ostermiller.org/dilate_and_erode.html看起来特别适用于你的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)