当前位置: 首页 > 知识库问答 >
问题:

二维网格游戏板上移动攻击区域内攻击目标的空间搜索算法

史经业
2023-03-14

我正在寻找一个算法名称或实现,它可以从有效移动列表中为我提供有效位置,我可以从中攻击给定目标。

我有一个2D平铺地图和一个英雄,他可以移动一定数量的移动,并攻击范围内的敌人。由于地图上的障碍物,英雄的移动区域各不相同,可能会有洞:

在这个问题中,我已经学会了如何将这个移动区域和攻击区域结合起来,以获得我的英雄在游戏板上施加的总“威胁”范围。在这种情况下,有两个敌人在威胁范围内,可以被攻击:

我正在寻找一个通用算法的名称或信息,该算法将采用:

  • 威胁区域(黄色)
  • 有效移动(橙色)
  • 目标位置(绿色)

并返回橙色区域内所有我可以攻击给定目标的细胞。因为敌人有他们自己的威胁范围,我不一定需要最近的方格-我会检查可能的移动,并选择一个威胁最小的来攻击我的英雄。

共有2个答案

昌琪
2023-03-14

以下是我认为可以解决问题的方法:

1)找到英雄的威胁(移动攻击方格)

对于威胁区域内的每个目标,请执行以下操作:

2) 对于有效移动的每个方块,计算曼哈顿到特定目标的距离

3)如果(距离

在我的特殊情况下,我允许近战英雄攻击他们周围的所有 8 个方格(连接 8),这样他们就会表现得像国际象棋中的国王,而不是曼哈顿距离 将计算切布舍夫距离

林弘文
2023-03-14

你的英雄的一组可访问的图块是已知的。每个瓷砖周围都有一个威胁区域,它就像一个(凸?)多边形(菱形?然后可以将敌人的位置视为另一个凸多边形(在本例中为正方形)。在一般情况下,您想测试这些多边形是否相交,是吗?

不幸的是,这个普遍问题似乎比人们希望的要困难得多。

如果我们能发现您的问题具有某些特殊性质,我们可能会有更好的运气。如果你的英雄的威胁区域总是凸起的,那么你可以使用菱形的边界进行内外测试(类似于CGAL的bounded_side_2测试)

如果你发现这种方法不够好,那么你可以这样做:为棋盘预先生成“可攻击位置”的集合;每个细胞都知道英雄可以攻击的其他细胞的集合。这是一个时间-空间的权衡,如果你没有大的内存限制或移动障碍,那么它应该可以很好地工作。

 类似资料:
  • 在本节中,我们将讨论如何攻击网站。对于攻击网站,我们有两种方法: 我们可以使用攻击迄今为止学到的网站方法的方法。因为我们知道网站安装在计算机上,所以可以像其他任何计算机一样尝试攻击和破解它。但是,我们知道网站安装在计算机上,可以像其他计算机一样尝试攻击和破解它。还可以使用服务器端攻击来查看安装了哪个操作系统,Web服务器或其他应用程序。如果发现了漏洞,我们可以使用它们中的任何一个来访问计算机。 另

  • 在本节中,我们将讨论中间人(MITM)攻击。这是在网络中执行的最危险的攻击之一。我们在连接到网络后执行此攻击。此攻击会将数据包流从任何客户端重定向到我们的设备。这意味着发送到客户端或从客户端发送的任何数据包都必须通过我们的设备。现在,我们知道网络的密码和密钥,因此将能够读取只读取这些数据包,修改它们,丢弃它们。这种攻击是如此有效和强大,因为它很难防范。这是由于ARP协议的工作方式。 ARP有两个主

  • 本文向大家介绍网络攻击症状,包括了网络攻击症状的使用技巧和注意事项,需要的朋友参考一下 如果我们认为计算机上已经安装了高级杀毒软件,并且由于它会定期执行完整的系统威胁感染扫描,则我们是完全安全的。但是,在某些情况下,扫描未检测到任何威胁,或者您无法执行扫描。在这些情况下,我们建议注意攻击性方法或症状以检测威胁或攻击。 如果发现任务管理器中不必要地存在PowerShell,那么我们的计算机肯定受到了

  • 我将保持简短,我正在做一个塔防御游戏作为一个迷你项目,而我有一些空闲时间,我正在试图弄清楚如何我可以实现的塔,以能够射击敌军时,他们进入射程使用dist但我只是不知道如何实现一个方法,使用敌军的位置和塔的位置。我有一个爬行精灵和塔的数组列表 如果有人能给我一些指导,告诉我如何让高塔能够射杀这些怪物,那将是很棒的,即使它不能摆脱它们,只是能够射杀它们也是很棒的。 干杯

  • 本文向大家介绍威胁与攻击之间的区别,包括了威胁与攻击之间的区别的使用技巧和注意事项,需要的朋友参考一下 威胁 威胁是利用系统/资产漏洞的可能的安全状况/违规行为。威胁可能来自任何情况,例如事故,火灾,自然灾害等环境,人为疏忽。以下是各种类型的威胁。 中断 拦截 制作 修改 攻击 攻击是对系统/资产的有意未经授权的操作。攻击总是有滥用系统的动机,通常会等待机会发生。 以下是威胁与攻击之间的一些重要区

  • 在GFW里屡见不鲜的,呵呵. 中间人攻击(Man-in-the-middle attack,通常缩写为MITM)是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。